CN==URL 的自签名证书 ERR_CERT_COMMON_NAME_INVALID

CN==URL 的自签名证书 ERR_CERT_COMMON_NAME_INVALID

我已经生成了自签名证书,其中包含别名服务器和 IP 地址的主题备用名称。我已将证书导入 Windows 受信任的证书颁发机构。Chrome 接受来自 SAN 的 URL 证书,但拒绝主题中所述的 URL。

OpenSSL:

openssl req -x509 -newkey rsa:4096 -sha256 -days 999 -nodes \
-keyout nginx.key -out nginx.crt  -subj '/CN=www.X.eu' \
-extensions san  \
-config <(echo '[req]'; echo 'distinguished_name=req'; echo '[san]'; echo 'subjectAltName=DNS:X.eu,DNS:re1.X.eu,DNS:10.105.1.11')

证书:

Subject: CN = www.X.eu
Subject Alternative Name:
 DNS Name=sandbox.X.eu 
 DNS Name=re1.X.eu 
 DNS Name=10.105.1.11

此 URL 失败,并显示“此站点缺少有效的、可信的证书 (net::ERR_CERT_COMMON_NAME_INVALID)。”

https://www.X.eu/favicon.ico

Chrome 接受此 URL:

https://re1.X.eu/favicon.ico

哪里有问题?

答案1

在 HTTPS 中,CN 字段是不是与 subjectAltName 合并 - 相反,当 SAN 扩展中包含任何域时,它将被完全忽略。因此,无论您在 CN 中拥有什么域,您必须也添加到 SAN。

事实上,您甚至可以完全从主题中省略 CN,因为所有 TLS 客户端都支持 SAN。

RFC 2818:TLS 上的 HTTP,第 3.1 节“服务器身份”:

   如果存在 dNSName 类型的 subjectAltName 扩展,则必须
   作为身份。否则,(最具体的)通用名称
   必须使用证书主题字段中的字段。

相关内容