导入自签名证书时显示“不是证书颁发机构”

导入自签名证书时显示“不是证书颁发机构”

我创建了一个用于本地开发的自签名 SSL 证书。访问页面时出现错误NET::ERR_CERT_AUTHORITY_INVALID。但当我尝试将其导入 Chrome 时(chrome://settings/certificates), 它失败:

该文件包含一个未导入的证书:

  • mylocalwebapp.dev:不是认证机构

这是我运行来创建证书的命令:

openssl req -new -x509 -nodes \
 -extensions SAN \
 -reqexts SAN  \
 -days 365 \
 -newkey rsa:2048 \
 -keyout /etc/ssl/private/apache-selfsigned.key \
 -out /etc/ssl/certs/apache-selfsigned.crt \
 -config <(cat /etc/ssl/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:mylocalwebapp.dev'))

我添加了 SAN 选项,因为从版本 58 开始,Chrome 不再接受它无需 SAN。它在 Chrome 57 上运行良好,并且仍然在 Firefox 上运行良好。

如何让我的自签名证书在 Ubuntu 17.04 上的 Chrome 58 上运行?

答案1

只是为了确保我们覆盖了所有基础...您是否尝试过这里概述的流程?https://stackoverflow.com/questions/7580508/getting-chrome-to-accept-self-signed-localhost-certificate

这对我来说曾经有效,但是从今天早上更新到 Chrome 58.0.3029.81 后,我还在控制台中收到了以下错误,该错误针对曾经在 Ubuntu 16.04 上运行的自签名证书:

Certificate Error
There are issues with the site's certificate chain (net::ERR_CERT_AUTHORITY_INVALID).

编辑:

我刚刚使用上面提到的链接中的一种方法成功了。它完全绕过了 Chrome,因为 Chrome 似乎发生了一些变化,无法正常工作。

使用 OpenSSL 客户端转储证书(可能没有必要,但如果您想非常彻底):

$ echo QUIT | openssl s_client -connect $DOMAIN_TO_FETCH_FROM:443 | sed -ne '/BEGIN CERT/,/END CERT/p' > my-cert

要使用 安装转储的证书certutil。如果您没有使用 openssl 转储证书,请将其替换my-cert为适当的文件名:

$ certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n my-cert -i my-cert

使用以下命令检查证书的安装certutil(如果您愿意的话):

$ certutil -d sql:$HOME/.pki/nssdb -L

# Certificate Nickname                                         Trust Attributes
#                                                              SSL,S/MIME,JAR/XPI
#
# my-cert                                                      P,,  

完全关闭并重新启动 Chrome,也许你会成功。对于我来说,58 和 59-beta 版本都有效。

相关内容