我得到了一个私钥,结果证明是 pkcs8 格式,我设法使用以下命令将其转换为 pem 文件:
openssl pkcs8 -inform der -nocrypt -in private.key -out pkey.pem
我现在需要将其转换为 pkcs12,以便可以在 .NET 中使用它来创建 X509 证书(我也想将其导入 Windows 证书管理器)。
我试过这个命令:
openssl pkcs12 -export -name myalias -in mycert.crt -inkey pkey.pem -out keystore.p12
但是,我没有公钥,我尝试使用 pkey.pem 文件作为 -in arg,但它告诉我No certificate matches private key
。如果我尝试不使用-in
arg 则什么都不会发生(我的意思是什么,在我按下之前有一个空白行ctrl-c
)。
如何从私钥生成公钥,或在没有公钥的情况下转换为 pkcs12?
这个问题的第一部分来自这里的答案
我找到了一个给我一些希望的答案,它说运行这个命令(-nocerts):
openssl pkcs12 -export -nocerts -inkey your.private.key.pem -out your.private.key.p12
但是当我尝试将文件导入 Windows 密钥库The specified file is empty
时,它会在导入时显示。
我还设法从此处的说明生成证书签名请求,该请求生成了一个证书文件,但该命令仍然不接受该说法No certificate matches private key
另一个答案建议生成公钥,我这样做了,但是当我使用它作为-in
arg 它仍然说No certificate matches private key
,我不明白,因为这个公钥是使用这个命令从私钥生成的:openssl rsa -in privkey.pem -pubout > key.pub
编辑:我在下面发布了一个答案,但如前所述,我无法验证此信息或判断它是否有效。如果有人有任何进一步的信息,请告诉我。