我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。
我该怎么做才能让Chrome接受证书并停止抱怨?
我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。
我该怎么做才能让Chrome接受证书并停止抱怨?
当前回答
mkdir CA
openssl genrsa -aes256 -out CA/rootCA.key 4096
openssl req -x509 -new -nodes -key CA/rootCA.key -sha256 -days 1024 -out CA/rootCA.crt
openssl req -new -nodes -keyout example.com.key -out domain.csr -days 3650 -subj "/C=US/L=Some/O=Acme, Inc./CN=example.com"
openssl x509 -req -days 3650 -sha256 -in domain.csr -CA CA/rootCA.crt -CAkey CA/rootCA.key -CAcreateserial -out example.com.crt -extensions v3_ca -extfile <(
cat <<-EOF
[ v3_ca ]
subjectAltName = DNS:example.com
EOF
)
其他回答
当我尝试在浏览器中导入证书时,它对我不起作用。。。在chrome中,打开Developer Tools>Security,然后选择View certificate。单击“详细信息”选项卡并将其导出。
//LINUX操作系统
sudo apt-get install libnss3-tools
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n [EXPORTED_FILE_PATH] -i [EXPORTED_FILE_PATH]
运行此命令,如果您看到您刚刚导入的文件,就可以开始了!
certutil -d sql:$HOME/.pki/nssdb -L
//Windows
Start => run => certmgr.msc
在左侧选择受信任的根证书颁发机构=>个人。单击操作选项卡=>所有操作/导入,然后从浏览器中选择之前导出的文件
别忘了重新启动chrome!!!
祝你好运!;)
我刚刚在我的chrome中启用了允许不安全的localhost标志,就这样。
步骤。
类型chrome://flags在您的铬标签中。搜索允许不安全的本地主机标志并启用它。重新启动chrome浏览器。
现在,您将不会看到不安全的警告https://localhost地点。
当单击URL旁边的小划掉的锁定图标时,您将看到一个如下所示的框:
单击证书信息链接后,您将看到以下对话框:
它告诉哪个证书存储是正确的,它是受信任的根证书颁发机构存储。
您可以使用其他答案中列出的方法之一将证书添加到该存储,也可以使用:
certutil -addstore -user "ROOT" cert.pem
ROOT是前面提到的证书存储的内部名称。cert.pem是自签名证书的名称。
Linux系统
如果您使用的是Linux,也可以关注以下官方wiki页面:
在Linux上配置SSL证书。NSS共享数据库和LINUXNSS共享数据库如何
基本上:
单击带有X的锁定图标,选择证书信息转到“详细信息”选项卡单击导出。。。(另存为文件)
现在,以下命令将添加证书(其中YOUR_FILE是导出的文件):
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n YOUR_FILE -i YOUR_FILE
要列出所有证书,请运行以下命令:
certutil -d sql:$HOME/.pki/nssdb -L
如果它仍然不起作用,您可能会受到此错误的影响:问题55050:Ubuntu SSL错误8179
另外,在使用上述命令之前,请确保您拥有libnss3工具。
如果没有,请通过以下方式安装:
sudo apt-get install libnss3-tools # on Ubuntu
sudo yum install nss-tools # on Fedora, Red Hat, etc.
另外,您可以使用以下方便的脚本:
$ cat add_cert.sh
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n $1 -i $1
$ cat list_cert.sh
certutil -d sql:$HOME/.pki/nssdb -L # add '-h all' to see all built-in certs
$ cat download_cert.sh
echo QUIT | openssl s_client -connect $1:443 | sed -ne '/BEGIN CERT/,/END CERT/p'
用法:
add_cert.sh [FILE]
list_cert.sh
download_cert.sh [DOMAIN]
故障排除
使用--auto-ssl客户端身份验证参数运行Chromegoogle chrome--自动ssl客户端身份验证
下面是一个仅使用Java 8 keytool.exe而不是openssl的解决方案:
@echo off
set PWD=changeit
set DNSNAME=%COMPUTERNAME%
echo create ca key
keytool -genkeypair -alias ca -keystore test.jks -keyalg RSA -validity 3650 -ext bc:critical=ca:true -dname "CN=CA" -storepass:env PWD -keypass:env PWD
echo generate cert request for ca signing
keytool -certreq -keystore test.jks -storepass:env PWD -alias ca -file ca.csr -ext bc:critical=ca:true
echo generate signed cert
keytool -gencert -keystore test.jks -storepass:env PWD -alias ca -infile ca.csr -outfile ca.cer -validity 3650 -ext bc:critical=ca:true
echo CA created. Import ca.cer in windows and firefox' certificate store as "Trusted CA".
pause
echo create server cert key for %DNSNAME%
keytool -genkeypair -alias leaf -keystore test.jks -keyalg RSA -validity 3650 -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1 -dname "CN=Leaf" -storepass:env PWD -keypass:env PWD
echo generate cert request
keytool -certreq -keystore test.jks -storepass:env PWD -alias leaf -file leaf.csr -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1
echo generate signed cert
keytool -gencert -keystore test.jks -storepass:env PWD -alias ca -infile leaf.csr -outfile leaf.cer -validity 3650 -ext bc=ca:false -ext san=dns:%DNSNAME%,dns:localhost,ip:127.0.0.1
rem see content
rem keytool -printcert -file leaf.cer -storepass:env PWD
echo install in orig keystore
keytool -importcert -keystore test.jks -storepass:env PWD -file leaf.cer -alias leaf
echo content of test.jks:
keytool -list -v -storepass:env PWD -keystore test.jks
pause
您也可以使用管道而不是文件,但是使用这些文件,如果出现问题,您可以检查中间结果。SSL在windows上通过IE11、Edge、FF54、Chrome60和Android上的Chrome60进行了测试。
请在使用脚本之前更改默认密码。