Chrome:无效的自签名SSL证书 – “主题备用名称缺失”

最近,Chrome已经停止使用我自己签署的SSL证书,并认为他们不安全。 当我查看DevTools | Security中的证书时 DevTools | Security标签,我可以看到它说

使用者备用名称丢失本网站的证书不包含包含域名或IP地址的主题备用名称扩展名。

证书错误网站的证书链有问题(net :: ERR_CERT_COMMON_NAME_INVALID)。

我该如何解决这个问题?

为了解决这个问题,你需要提供一个额外的参数来openssl当你创build证书,基本上

-sha256 -extfile v3.ext

其中v3.ext是一个像这样的文件, %%DOMAIN%%replace为您用作Common Name的相同Common Name 。 更多信息在这里和这里 。 请注意,通常您需要将Common Name%%DOMAIN%%设置为您要为其生成证书的域。 所以,如果这是www.mysupersite.com ,那么你会用这两个。

v3.ext

 authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = %%DOMAIN%% 

注意:解决此问题的脚本以及创build用于Chrome,Safari和Java客户端的完全可信的ssl证书可以在此处find

另一个注意事项 :如果您正在尝试执行的操作是在查看自签名证书时停止浏览器抛出错误,则可以通过使用特殊命令行选项启动浏览器来忽略所有站点的所有SSL错误, 如此处所述在超级用户

我创build了一个bash脚本 ,以便于生成在Chrome中有效的自签名TLS证书。

self-signed-tls bash脚本

安装证书后,请确保重新启动chrome( chrome://restart )。 testing的Chrome 61.x ,它仍然工作正常。

我只是使用-subj参数添加机器的ip地址。 所以只用一个命令解决。

 sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -sha256 -subj '/CN=my-domain.com/subjectAltName=DNS.1=192.168.0.222/' -keyout my-domain.key -out my-domain.crt 

您可以添加其他属性,如C,ST,L,O,OU,emailAddress来生成证书而不会提示。

我能够通过更改v3.ext文件的DNS.1值来摆脱(net :: ERR_CERT_AUTHORITY_INVALID)

[alt_names] DNS.1 = domainname.com

用您自己的域名更改domainname.com。