我使用 OpenSSL 创建了自签名 SSL 证书,如下所示:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
这给了我 .pem
文件中的证书和私钥。我需要以 .cer
或 .crt
格式向我的客户提供我的公钥。 有什么办法可以得到.cer
/.crt
格式的公钥吗?
我已经尝试过的:
<强>1。生成 .pem
格式的公钥并尝试将其转换为 .cer
或 .crt
[没有成功]
在 .pem
文件中提取公钥 [工作正常]:
`openssl x509 -pubkey -noout -in signer-cert.pem > signer-public-key-test.pem`
将.pem
转换为.cer
格式
openssl x509 -inform PEM -in signer-public-key-test.pem -outform DER -out signer-public-key-test.cer
我收到此错误:
unable to load certificate
140067363030680:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:701:Expecting: TRUSTED CERTIFICATE
<强>2。将我的证书转换为 .cer(我做得很好)并尝试按照给定的说明使用 Windows 证书导出向导导出公钥 here
也没用。我无法启用导出 key 的选项,最终输出在 Notepad++ 中打开时是垃圾。
所以我的问题是,有没有办法从头开始生成证书并将公钥保存在 .cer
或 .crt
文件中。或者以 .pem
格式生成证书,然后将公钥提取到 .crt
或 .cer
非常感谢任何帮助。
最佳答案
由于 .cer
和 .crt
通常表示“DER 或 PEM-DER X.509 证书”,我不知道您将公钥放入其中是什么意思那种格式。
如果你的意思是你想要一个 DER 编码的 SubjectPublicKeyInfo 代表公钥,你的管道的第二阶段将是
openssl asn1parse -noout -out some.file
您可以删除中间件
openssl x509 -in signer-cert.pem -noout -pubkey |
openssl asn1parse -noout -out signer-public-key-test.der
(添加换行符以删除滚动条)
或者,完全跳过证书中间人:
openssl rsa -in key.pem -pubout -outform der -out signer-public-key-test.der
不过,您想要那种特定格式似乎很奇怪。
关于ssl - 如何获取 .cer 或 .crt 格式的公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50258160/