正如标题所说:
使用 OpenSSL,如何生成自签名证书德格式其中包括私钥?这有可能吗?
我发现了大量的帖子解释了如何将证书和相应的私钥加入到 PFX 格式的文件中,但这不是我想要的。
背景:
实际上,我需要将该证书导入到 Windows 证书存储中。但我仍然想使用 Linux / OpenSSL 生成证书/密钥。
我首先尝试生成 PEM 格式的证书,然后将私钥文件(也是 PEM 格式)附加到它。 Windows 证书管理可以导入该文件,但丢失了私钥(它正确显示了证书,但声称我没有它的私钥)。
接下来,我获取了证书和私钥,并将它们加入到 PFX 文件中。问题在于,如果没有私钥的导出密码,OpenSSL 无法生成 PFX 文件。 Windows 证书管理可以导入该 PFX 文件(包括私钥),但应使用该证书的服务拒绝使用它,并显示模糊的错误消息。我已经调试了两天了,但没有效果。也许导出密码是问题所在(尽管 Windows 证书子系统希望在导入证书后不会要求提供该密码)。
所以我最后的希望是生成一个包含证书和私钥的 DER 文件。我知道可以将证书和私钥放入 DER 文件中,因为我可以使用 Windows 工具创建此类文件。但是在 Linux/OpenSSL 下我该如何做到这一点呢?
我正在使用类似以下脚本的内容来生成各种格式的相同证书(这是当前版本,已经尝试了无数变体):
#!/bin/bash
# Generate RSA key
openssl genrsa -out key.pem 4096
# Generate certificate request
openssl req -new -nodes -key key.pem -out csr.pem -subj /CN=DAX
# Generate self-signed certificate (sign the certificate request)
openssl req -x509 -nodes -sha256 -days 36500 -key key.pem -in csr.pem -out cert.pem
# Add some extensions ...
openssl x509 -extfile /etc/ssl/pp-openssl.cnf -sha256 -days 36500 -signkey key.pem -in cert.pem -out ext.pem
# Append private key to the PEM certificate
cat key.pem >> ext.pem
# Create PFX and DER formats
openssl pkcs12 -nodes -export -out cert.pfx -inkey key.pem -in ext.pem
openssl x509 -outform der -out cert.cer -in ext.pem
最后一行显然剥离了私钥(不将其包含在 DER 文件中),尽管它包含在 PEM 输入文件中。
更新
我知道可以将证书和私钥放入 DER 文件中,因为我可以使用 Windows 工具创建此类文件。
事实证明,我上面的这个说法是错误的。我误解了我的测试结果 - 请参阅下面的评论。简而言之,同一 DER 文件中不可能有证书和私钥。
但是,我保留原来的问题以供将来参考。