最近,Chrome已停止使用我自己签署的SSL证书,并认为它们不安全 . 当我查看 DevTools | Security 标签中的证书时,我可以看到它说
DevTools | Security
主题备用名称缺失此站点的证书不包含包含域名或IP地址的主题备用名称扩展名 . 证书错误站点的证书链存在问题(net :: ERR_CERT_COMMON_NAME_INVALID) .
我怎样才能解决这个问题?
以下解决方案为我在chrome 65(ref)工作 -
创建一个OpenSSL配置文件(例如:req.cnf)
[req] distinguished_name = req_distinguished_name x509_extensions = v3_req prompt = no [req_distinguished_name] C = US ST = VA L = SomeCity O = MyCompany OU = MyDivision CN = www.company.com [v3_req] keyUsage = critical, digitalSignature, keyAgreement extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = www.company.com DNS.2 = company.com DNS.3 = company.net
创建引用此配置文件的证书
openssl req -x509 -nodes -days 730 -newkey rsa:2048 \ -keyout cert.key -out cert.pem -config req.cnf -sha256
要解决此问题,您需要在创建证书时为 openssl 提供额外的参数
openssl
-sha256 -extfile v3.ext
其中 v3.ext 是这样的文件, %%DOMAIN%% 替换为您用作 Common Name 的相同名称 . 更多信息here和over here . 请注意,通常您将 Common Name 和 %%DOMAIN%% 设置为您尝试为其生成证书的域 . 所以,如果它是 www.mysupersite.com ,那么你就可以使用它 .
v3.ext
%%DOMAIN%%
Common Name
www.mysupersite.com
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = %%DOMAIN%%
Another note :如果你要做的就是在查看自签名证书时阻止chrome抛出错误,你可以告诉Chrome忽略所有站点的所有SSL错误,方法是使用特殊的命令行选项启动它,as detailed here on SuperUser
我创建了一个 bash script ,以便更轻松地生成在Chrome中有效的自签名TLS证书 .
self-signed-tls bash脚本
安装证书后,请确保重新启动chrome( chrome://restart ) . 经过 Chrome 65.x 测试,它仍然有效 .
chrome://restart
Chrome 65.x
值得一试的另一个(更强大的)工具是CloudFlare的 cfssl 工具包:
cfssl
我只是使用 -subj 参数添加机器的IP地址 . 所以只用一个命令解决了 .
-subj
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 .
在 MAC 从chrome版本67.0.3396.99开始,我的自签名证书停止工作 .
所有写在这里的东西再生都没有用 .
UPDATE
有机会确认我的方法今天有效:) . 如果它不起作用,请确保您使用此方法
v3.ext authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = <specify-the-same-common-name-that-you-used-while-generating-csr-in-the-last-step> $
从这里复制https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/
END UPDATE
终于能够看到绿色安全只有 removed 我的证书来自 system ,而 added 它才能 local 钥匙串 . (如果有的话 - 首先丢弃它) . 不确定它是否匹配,但在我的情况下,我通过chrome下载了证书,并确认创建日期是今天 - 所以它是我刚创建的那个 .
希望有人花一天时间来帮助它 .
永远不会更新铬!
6 回答
以下解决方案为我在chrome 65(ref)工作 -
创建一个OpenSSL配置文件(例如:req.cnf)
创建引用此配置文件的证书
要解决此问题,您需要在创建证书时为
openssl
提供额外的参数-sha256 -extfile v3.ext
其中
v3.ext
是这样的文件,%%DOMAIN%%
替换为您用作Common Name
的相同名称 . 更多信息here和over here . 请注意,通常您将Common Name
和%%DOMAIN%%
设置为您尝试为其生成证书的域 . 所以,如果它是www.mysupersite.com
,那么你就可以使用它 .v3.ext
注意:可以在此处找到解决此问题并创建完全受信任的ssl证书以在Chrome,Safari和Java客户端中使用的脚本
Another note :如果你要做的就是在查看自签名证书时阻止chrome抛出错误,你可以告诉Chrome忽略所有站点的所有SSL错误,方法是使用特殊的命令行选项启动它,as detailed here on SuperUser
我创建了一个 bash script ,以便更轻松地生成在Chrome中有效的自签名TLS证书 .
安装证书后,请确保重新启动chrome(
chrome://restart
) . 经过Chrome 65.x
测试,它仍然有效 .值得一试的另一个(更强大的)工具是CloudFlare的
cfssl
工具包:我只是使用
-subj
参数添加机器的IP地址 . 所以只用一个命令解决了 .您可以添加其他属性,如C,ST,L,O,OU,emailAddress,以生成证书而不会被提示 .
通过更改v3.ext文件的DNS.1值,我能够摆脱(net :: ERR_CERT_AUTHORITY_INVALID)
[alt_names] DNS.1 = domainname.com
使用您自己的域名更改domainname.com .
在 MAC 从chrome版本67.0.3396.99开始,我的自签名证书停止工作 .
所有写在这里的东西再生都没有用 .
UPDATE
有机会确认我的方法今天有效:) . 如果它不起作用,请确保您使用此方法
从这里复制https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/
END UPDATE
终于能够看到绿色安全只有 removed 我的证书来自 system ,而 added 它才能 local 钥匙串 . (如果有的话 - 首先丢弃它) . 不确定它是否匹配,但在我的情况下,我通过chrome下载了证书,并确认创建日期是今天 - 所以它是我刚创建的那个 .
希望有人花一天时间来帮助它 .
永远不会更新铬!