ssl - CA 签名的 X509 证书包含两次 X509v3 扩展 "Subject Alternative Name"

标签 ssl openssl x509certificate x509 subject-alternative-name

如果我使用 OpenSSL 创建 X509 证书,该证书使用 CA 证书签名并包含 X509v3 SAN(主题备用名称)扩展,则生成的证书包含两次 SAN 扩展,而如果证书是自签名的,则 SAN扩展只出现一次(我认为这是正确的)。

重现步骤:

$ openssl version
OpenSSL 1.0.2n  7 Dec 2017
$ openssl genrsa -out example.key 2048
$ openssl req -new -key example.key -out example.csr
# ... confirm certificate defaults only enter "example.com" as Common Name
$ echo subjectAltName=DNS:example.com,DNS:www.example.com > example.cnf
$ openssl x509 -req -sha256 -days 7300 -text -extfile example.cnf \
  -in example.csr -signkey example.key \
  -CA ../ca.crt -CAkey ../ca.key -set_serial 01 \
  -out example.crt

之后,如果我检查证书,“X509v3 Subject Alternative Name” 部分会打印两次:

$ openssl x509 -in example.crt -text -noout
...
        X509v3 extensions:
            X509v3 Subject Alternative Name: 
                DNS:example.com, DNS:www.example.com
            X509v3 Subject Alternative Name: 
                DNS:example.com, DNS:www.example.com
...

如果没有使用 CA 并且证书通过以下方式自签名,则情况并非如此:

$ openssl x509 -req -sha256 -days 7300 -text -extfile example.cnf \
  -in example.csr -signkey example.key \
  -out example.crt

我可以使用 OpenSSL 1.0.2n 以及 OpenSSL 0.9.8zh 验证此行为。

这是 OpenSSL 错误还是对此有任何有效的解释?

最佳答案

请参阅@dave_thompson_085 的回答:
同时使用 -signkey-CAkey 没有任何意义并且会触发这种奇怪的副作用。

关于ssl - CA 签名的 X509 证书包含两次 X509v3 扩展 "Subject Alternative Name",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48041544/

相关文章:

ssl - Wamp SSL :- redirect http to https

pip - PyOpenSSL 版本 0.13.1 在 pip 升级后

c# - 在数据库中存储 X509 证书

php - Laravel 在使用 HTTPS 时添加/删除字符

java - 如何修复证书中的主机名不匹配

PHP WebHook Telegram Bot - SSL CloudFlare

openssl - 使用静态链接构建 libcurl 到 openssl

c# - 获取本地机器上安装的所有证书

java - 当存在相同别名时,从 Windows-MY 获取证书

java - 无法使用 Java/Glassfish 使用受 SSL 保护的 Web 服务