Invalid self signed SSL cert - “Subject Alternative Name Missing”
最近,Chrome已停止使用我自己签署的SSL证书,并认为它们不安全。 当我在
Subject Alternative Name Missing The certificate for this site does
not contain a Subject Alternative Name extension containing a domain
name or IP address.Certificate Error There are issues with the site's certificate chain
(net::ERR_CERT_COMMON_NAME_INVALID).
我怎样才能解决这个问题?
要解决此问题,您需要在创建证书时为
其中
v3.ext
1 2 3 4 5 6 7 | authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = %%DOMAIN%% |
注意:可以在此处找到解决此问题的脚本,并创建用于Chrome,Safari和Java客户端的完全受信任的ssl证书
另一个注意事项:如果你想要做的就是在查看自签名证书时阻止chrome抛出错误,你可以通过一个特殊的命令行选项告诉Chrome忽略所有站点的所有SSL错误,详见此处在SuperUser上
以下解决方案为我在chrome 65(ref)上工作 -
创建一个OpenSSL配置文件(例如:req.cnf)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [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 |
创建引用此配置文件的证书
1 2 | openssl req -x509 -nodes -days 730 -newkey rsa:2048 \ -keyout cert.key -out cert.pem -config req.cnf -sha256 |
我创建了一个bash脚本,以便更轻松地生成在Chrome中有效的自签名TLS证书。
self-signed-tls bash script
安装证书后,请确保重新启动chrome(
值得一试的另一个(更强大的)工具是CloudFlare的
cfssl
我只是使用
1 | 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,以生成证书而不会被提示。
-
在主目录中制作OpenSSL配置的副本:
1cp /System/Library/OpenSSL/openssl.cnf ~/openssl-temp.cnf或者在Linux上:
1cp /etc/ssl/openssl.cnf ~/openssl-temp.cnf -
在
[v3_ca] 下将主题备用名称添加到openssl-temp.cnf :1
2[ v3_ca ]
subjectAltName = DNS:localhost将
localhost 替换为要为其生成该证书的域。 -
生成证书:
1
2
3sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-config ~/openssl-temp.cnf
-keyout /path/to/your.key -out /path/to/your.crt
然后,您可以删除
在MAC上
从chrome版本67.0.3396.99开始,我的自签名证书停止工作。
所有写在这里的东西再生都没有用。
UPDATE
有机会确认我的方法今天有效:)。如果它不起作用,请确保您使用此方法
1 2 3 4 5 6 7 8 9 | 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> $ |
从这里复制
Generate and import a Self-Signed SSL certificate on Mac OS X Sierra
结束更新
最后只有在从系统中删除我的证书时才能看到绿色安全,并将其添加到本地钥匙串。 (如果有的话 - 首先丢弃它)。不确定它是否匹配,但在我的情况下,我通过chrome下载了证书,并确认创建日期是今天 - 所以它是我刚创建的那个。
希望有人花一天时间来帮助它。
永远不会更新铬!
通过更改v3.ext文件的DNS.1值,我能够摆脱(net :: ERR_CERT_AUTHORITY_INVALID)
[alt_names]
DNS.1 = domainname.com
使用您自己的域名更改domainname.com。