我已经为localhostCN创建了一个自签名的SSL证书。正如预期的那样,Firefox在最初抱怨后接受了这个证书。然而,Chrome和IE拒绝接受它,即使在将证书添加到Trusted Roots下的系统证书存储之后。尽管当我在Chrome的HTTPS弹出窗口中单击“查看证书信息”时,证书被列为正确安装,但它仍然坚称证书不可信。

我该怎么做才能让Chrome接受证书并停止抱怨?


当前回答

这是一个不断出现的东西——尤其是在Mac OS X Yosemite上的谷歌Chrome!

谢天谢地,我们的一个开发团队今天向我发送了这个链接,该方法工作可靠,同时仍然允许您控制接受证书的站点。

https://www.reddit.com/r/sysadmin/comments/3ercx4/chrome_shortcut_past_the_your_connection_is_not/cthporl

jersully帖子:

如果您不想麻烦内部证书。。。类型chrome://flags/在地址栏中。滚动到或搜索“记住决策”以在指定的时间长度内继续处理SSL错误。选择“记住三个月”。

其他回答

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客户端身份验证

这篇文章已经得到了大量的响应,但我基于其他一些答案创建了一个bash脚本,以便更容易生成在Chrome中有效的自签名TLS证书(在Chrome65.x中测试)。希望它对其他人有用。

自签名tls-bash脚本

安装(并信任)证书后,不要忘记重新启动Chrome(chrome://restart)


另一个值得一看的工具是CloudFlare的cfssl工具包:

cfssl

我不得不调整macosx上的Chrome启动程序,并添加了以下脚本。保存如下:;

/应用程序/Google\Chrome.app/Contents/MacOS/Chrome.com命令

#!/bin/sh
RealBin="Google Chrome"
AppDir="$(dirname "$0")"
exec "$AppDir/$RealBin" --ignore-certificate-errors "$@"

当我用这个脚本启动Chrome时,自签名证书可以正常工作。但是,不要使用使用此脚本启动的浏览器浏览网页,您将不会收到有关无效证书的警告!

我也遇到了同样的问题:我已将证书安装到Windows的Trusted Root Authorities存储中,但Chrome仍然拒绝证书,错误为ERR_CERT_COMMON_NAME_INVALID。请注意,当证书未正确安装在存储中时,错误为ERR_CERT_AUTHORITY_INVALID。

正如错误名称、此注释和此问题所暗示的,问题在于证书中声明的域名。当生成证书时提示输入“CommonName”时,我必须输入用于访问站点的域名(在我的情况下是localhost)。我使用重新启动了Chromechrome://restart它终于对这个新证书感到满意。

更新11/2017:这个答案可能不适用于大多数较新版本的Chrome。更新02/2016:Mac用户的更好说明可以在这里找到。

在要添加的站点上,右键单击地址栏中的红色锁定图标:单击标记为“连接”的选项卡,然后单击“证书信息”单击“详细信息”选项卡,然后单击“复制到文件…”按钮。。。。这将打开证书导出向导,单击下一步进入导出文件格式屏幕。选择DER编码二进制X.509(.CER),单击“下一步”单击浏览。。。并将文件保存到计算机。给它起个描述性的名字。单击下一步,然后单击完成。打开Chrome设置,滚动到底部,然后单击显示高级设置。。。在HTTPS/SSL下,单击管理证书。。。单击受信任的根证书颁发机构选项卡,然后单击导入。。。按钮这将打开证书导入向导。单击“下一步”进入“要导入的文件”屏幕。单击浏览。。。并选择先前保存的证书文件,然后单击“下一步”。选择将所有证书放置在以下存储中。所选存储应为受信任的根证书颁发机构。如果不是,请单击浏览。。。然后选择它。单击“下一步”并完成单击安全警告上的“是”。重新启动Chrome。