我为localhost CN创建了一个自签名的SSL证书。火狐浏览器在最初抱怨后接受了这个证书,正如预期的那样。然而,Chrome和IE拒绝接受它,甚至在将该证书添加到受信任根下的系统证书库后也是如此。尽管当我在Chrome的HTTPS弹出窗口点击 "查看证书信息 "时,该证书被列为正确安装,但它仍然坚持认为该证书不可信。
我应该怎么做才能让Chrome接受该证书并停止抱怨呢?
在Mac上,你可以使用钥匙串访问工具,将自签名证书添加到系统钥匙串中,然后Chrome就会接受它。我在这里找到了分步骤的说明。
基本上。
1.双击带X的锁形图标,并将证书图标拖放到桌面上。 1.打开这个文件(以.cer为扩展名结尾);这将打开钥匙串应用程序,允许你批准该证书。
如果你使用的是Linux,你也可以关注这个官方的wiki页面。
基本上。
现在,以下命令将添加证书(其中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
P.S. 请确保你有libnss3-tools
,才能使用上述命令。
如果你没有,请通过以下方式安装它。
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-client-auth
参数运行Chrome浏览器
google-chrome --auto-ssl-client-auth
。
你确定网站提供的地址与证书上的地址相同吗?我在使用Chrome浏览器和自签名证书时遇到了同样的问题,但最后我发现它对证书上的域名验证非常挑剔(应该如此)。
Chrome没有自己的证书库,而是使用Window自己的。然而,Chrome没有提供将证书导入存储的方法,所以你应该通过IE添加它们。
还可以看看这个,了解一些创建自签名证书的不同方法(我假设你使用的是IIS,因为你没有提到)。