当前位置: 首页 > 知识库问答 >
问题:

CA签名X509证书包含X509v3扩展名"主题替代名称"两次

秦景福
2023-03-14

如果我使用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受试者替代名称”部分将打印两次:

$ 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错误还是有任何有效的解释?

共有1个答案

黄信厚
2023-03-14

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

 类似资料:
  • 我已经通过终端在远程ubuntu机器中逐一使用以下命令生成了一个SSL自签名证书: T我已经将添加到本地计算机的cacerts中,使用命令提示符中的keytool作为admin。还将添加到“受信任的根证书颁发机构”中。他发出对Postman上的远程ubuntu机器服务器的HTTPS请求可以正常工作,但在IntelliJ上就不行了,我可以放心地得到:

  • 最近,Chrome已经停止使用我自己签名的SSL证书,并认为它们不安全。当我查看选项卡中的证书时,我可以看到它说 主题备选名称缺少此站点的证书不包含包含域名或IP地址的主题备选名称扩展名。 证书错误站点的证书链存在问题(net::ERR\u CERT\u COMMON\u NAME\u无效)。 我怎样才能解决这个问题?

  • > 我通过终端在远程ubuntu机器中逐一使用以下命令生成了一个SSL自签名证书:a。b。c.d。(在此步骤中,提供公共名称)e。F。 我已经将server.crt添加到本地计算机的cacerts中,使用命令提示符中的keytool作为admin 还将server.crt添加到“受信任的根证书颁发机构”中 现在的问题是,Postman上对远程ubuntu机器服务器的HTTPS请求可以正常工作,但在

  • 我正在云中的Ubuntu12.10服务器(AWS)上运行一个Apache CouchDB实例(1.3.0版)。我正在尝试让SSL在我的couchDB实例上工作。 基本的SSL设置非常简单。我已将我的证书和密钥放在一个目录中,并在我的本地应用程序中取消了以下行的注释。ini文件 我还确保这些文件的所有权是正确的。 这很好,couchDB服务器启动,您可以导航到https://mycouchdbser

  • 问题内容: 我有一个网络应用程序,允许用户上传pkcs12。我将pkcs12作为二进制存储在数据库中。有什么办法让我知道pkcs12中的证书是自签名的还是CA签名的? 我正在tomcat上运行Java Web应用程序,并且可以使用openssl。 问题答案: 但是,我认为还有一些更重要的事情要解决- 为什么 人们想了解自签名证书。目标是什么?解决了什么问题?在大多数情况下,可能尝试将证书分为自签名

  • 我需要用DSA公钥验证X509证书签名。我的证书文件x509.crt,我的DSA公钥在一个名为dsa_pub.key的文件中 我正试图为此使用openssl。我已经阅读了openssl验证文档,但在其中找不到任何有关DSA的参考。 当我运行以下命令时,我可以在证书中看到我的DSA公钥: 但是,在使用文件DSA_pub.key中的DSA公钥验证cert.crt时,我遇到了麻烦 如果您有任何建议,我将