CA签名X509证书包含X509v3扩展名“主题备用名称”两次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CA签名X509证书包含X509v3扩展名“主题备用名称”两次相关的知识,希望对你有一定的参考价值。

如果我使用OpenSSL创建使用CA证书签名并包含X509v3 SAN(使用者替代名称)扩展名的X509证书,则生成的证书包含两次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主题备用名称”部分:

$ 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都没有任何意义,并触发了这种奇怪的副作用。

以上是关于CA签名X509证书包含X509v3扩展名“主题备用名称”两次的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X - 接受自签名多域 SSL 证书

使用 C# 从 CA 证书为设备创建 X509 证书

OpenSSL之X509证书用法

iOS适配HTTPS,创建一个自签名的SSL证书(x509)具体步骤

在 Hyperledger Fabric 中使用的外部 x509 证书签名和密钥算法的要求

Azure Key Vault 证书 - 创建基本约束 CA:True