Ssl 未将使用者备选名称复制到已签名证书

Ssl 未将使用者备选名称复制到已签名证书,ssl,openssl,self-signed,ca,Ssl,Openssl,Self Signed,Ca,我使用自签名CA证书签署其他证书。对于某些证书,我需要指定主题的备选名称。我可以在请求生成期间指定它们(openssl-req…),并在.csr文件中看到它们。然后我用CA证书签署它 openssl x509 -req -extensions x509v3_config -days 365 -in ${name}.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out ${name}.crt 以及openssl.cnf文件中的下一节: [ x509 ]

我使用自签名CA证书签署其他证书。对于某些证书,我需要指定主题的备选名称。我可以在请求生成期间指定它们(
openssl-req…
),并在.csr文件中看到它们。然后我用CA证书签署它

openssl x509 -req -extensions x509v3_config -days 365 -in ${name}.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out ${name}.crt
以及openssl.cnf文件中的下一节:

[ x509 ]
x509_extensions = x509v3_config

[ x509v3_config ]
copy_extensions = copy
但是我在.crt文件中没有看到SAN


我知道如何使用
opensslca…
命令,但我没有有效的
[ca]
部分,我不想在不深入了解它的功能的情况下复制/粘贴它。因此,我希望存在另一个使用
opensslx509…
命令的解决方案。

只有
opensslca
命令才能理解
copy\u extensions
指令。使用
opensslx509
命令无法将扩展从CSR复制到证书

相反,您应该在
opensslx509
命令中指定所需的确切扩展名,使用与
opensslreq
相同的指令。对不起,我还不能评论

除@frasertweedale外:

我使用配置文件生成了服务器证书

openssl req -new -out certificate.csr -key certificate_private_key.pem -sha256 -days 1825 -config certificate.conf 
然后我做了

相反,您应该使用与OpenSSL req相同的指令,在OpenSSL x509命令中指定所需的确切扩展名

使用以下命令(我再次使用了相同的.conf文件):


这里有一个很好的文档:

创建x509证书请求时,您需要编写一个openssl conf文件,如下所示:

创建企业社会责任

openssl req -new -key server.key -out server.csr -config csr.conf
签署证书

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf

这帮了大忙
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf