首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无效的自签名SSL证书- "Subject Alternative Name缺失“

无效的自签名SSL证书- "Subject Alternative Name缺失“
EN

Stack Overflow用户
提问于 2017-04-27 18:17:51
回答 11查看 219.3K关注 0票数 115

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

缺少此站点的证书的主题可选名称不包含包含域名或IP地址的主题可选扩展名。 证书错误网站的证书链(net::ERR_CERT_COMMON_NAME_INVALID)存在问题。

我怎么才能解决这个问题?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2017-04-27 18:17:51

要解决这个问题,您需要在创建证书时向openssl提供一个额外的参数,基本上

-sha256 -extfile v3.ext

其中v3.ext是像这样的文件,用与Common Name相同的名称替换%%DOMAIN%%。更多信息,这里到这里来。注意,通常您会将Common Name%%DOMAIN%%设置为要为其生成证书的域。所以,如果是www.mysupersite.com,那么你可以同时使用它。

v3.ext

代码语言:javascript
复制
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = %%DOMAIN%%

注意:解决此问题的脚本和创建完全可信的ssl证书,用于Chrome、Safari和Java客户端,可在此处找到

另一个注意事项:如果您所要做的只是在查看自签名证书时阻止铬抛出错误,您可以通过使用一个特殊的命令行选项如在SuperUser上详细介绍的来让chrome忽略所有站点的所有SSL错误

票数 116
EN

Stack Overflow用户

发布于 2018-04-06 12:00:18

下面的解决方案为我在铬65 (参考)上工作-

创建一个OpenSSL配置文件(例如: req.cnf)

代码语言:javascript
复制
[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

创建引用此配置文件的证书

代码语言:javascript
复制
openssl req -x509 -nodes -days 730 -newkey rsa:2048 \
 -keyout cert.key -out cert.pem -config req.cnf -sha256
票数 46
EN

Stack Overflow用户

发布于 2017-09-15 16:13:58

问题

正如其他人所提到的,发生NET::ERR_CERT_COMMON_NAME_INVALID错误是因为生成的证书不包括SAN (subjectAltName)字段。

自2000年5月以来,RFC2818一直反对回到commonName领域。subjectAltName字段的使用自58版以来一直在Chrome中强制使用(参见https://developers.google.com/web/updates/2017/03/chrome-58-deprecations#remove_support_for_commonname_matching_in_certificates)。

OpenSSL接受x509v3配置文件将扩展配置添加到证书中(有关配置选项,请参见https://www.openssl.org/docs/manmaster/man5/x509v3_config.html#Subject-Alternative-Name字段)。

巴什脚本

我创建了一个具有简单选项的自签名-tls bash脚本,可以方便地生成证书颁发机构并使用OpenSSL (在Chrome中使用subjectAltName字段有效)对x509证书进行签名。

该脚本将指导您完成一系列问题,以包含必要的信息(包括subjectAltName字段)。有关自动化的更多细节和选项,您可以参考README.md

安装新证书后,一定要重新启动chrome。

代码语言:javascript
复制
chrome://restart

其他资源

  • Docker文档有一个很简单的例子,用于创建自签名证书颁发机构并使用OpenSSL对证书进行签名。
  • cfssl也是一个非常健壮的工具,它被广泛使用,值得一看。
  • mkcert是用GoLang编写的工具。它似乎简单易用,对当地的发展很有好处。
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43665243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档