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

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


当前回答

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

其他回答

您确定站点的地址与证书相同吗?我对Chrome和自签名证书也有同样的问题,但最后我发现它对证书上域名的验证非常挑剔(应该如此)。

Chrome没有自己的证书存储,而是使用Windows自己的证书。然而,Chrome不提供将证书导入商店的方法,因此您应该通过IE添加证书。

在Google Chrome中安装证书

在Internet Explorer中安装证书

还可以看看这两种不同的创建自签名证书的方法(我假设您使用的是您没有提到的IIS)。

如何在IIS 7中创建自签名证书

当我尝试在浏览器中导入证书时,它对我不起作用。。。在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!!!

祝你好运!;)

我成功地遵循了凯伦的回答,并得到了托比·J的重要更新,但我不得不做出修改:

创建自签名证书时,必须将新的subjectAltName字段放在v3_ca扩展下,而不是v3_req。我将/etc/ssl/openssl.conf复制到一个临时文件中,然后在[v3_ca]下添加了一行subjectAltName=DNS:*.example.com。然后将该文件传递给cert创建命令,类似于

  openssl req -x509 -nodes -newkey rsa:2048 \
          -config /tmp/openssl-revised.cfg \
          -keyout example.com.key -out example.com.crt

并遵循kellen更新的步骤。

Linux上Chromium上管理SSL证书的GUI对我来说并不正常。然而,他们的文档给出了正确的答案。诀窍是运行下面的命令来导入自签名SSL证书。只需更新<certificate-name>和certificate-filename.cer的名称,然后重新启动chrome/chrome。

从文档:

在Linux上,Chromium使用NSS共享数据库。如果内置管理器不适用于您,则可以使用NSS命令行工具配置证书。获取工具Debian/Uubuntu:sudo apt-get安装libnss3工具Fedora:su-c“yum安装nss-tools”Gentoo:su-c“echo'dev-libs/nss-utils'>>/etc/portage/package.use&&emerge-dev-libs/nss”(您需要使用nss前缀启动下面的所有命令,例如nsscerttil。)Opensuse:sudo zypper安装mozilla nss工具要信任自签名服务器证书,我们应该使用certutil-d sql:$HOME/.pki/nssdb-A-t“P,,”-n<证书昵称>-i certificate-filename.cer列出所有证书certutil-d sql:$HOME/.pki/nssdb-LTRUSTARGS是三个由零个或多个字母字符组成的字符串,用逗号分隔。它们定义了SSL、电子邮件和对象签名应如何信任证书,并在certutil文档或Meena关于信任标志的博客文章中进行了解释。为SSL客户端身份验证添加个人证书和私钥使用命令:pk12util-d sql:$HOME/.pki/nssdb-i PKCS12_file.p12导入存储在PKCS#12文件中的个人证书和私钥。个人证书的TRUSTARGS将设置为“u,u,u”。删除证书certutil-d sql:$HOME/.pki/nssdb-d-n<证书昵称>

摘录自:https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md

正如有人指出的,你需要重启所有的Chrome,而不仅仅是浏览器窗口。最快的方法是打开一个选项卡。。。

chrome://restart