我得到了一个私钥,发现它的格式是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参数,但它告诉我No certificate matches private key
。如果我不使用-in
参数进行尝试,那么就什么都不会发生(我的意思是没有任何响应,只有一个空白的行,直到我按下ctrl-c
)。
我该如何从私钥生成公钥,或在没有公钥的情况下转换为pkcs12?
这个问题的第一部分是从这里的答案得到的。
我找到了一个答案,让我有些希望,它说要运行此命令(-nocerts):
openssl pkcs12 -export -nocerts -inkey your.private.key.pem -out your.private.key.p12
但是当我尝试将该文件导入Windows密钥库时,它会显示指定的文件为空
。
我还成功生成了一个证书签名请求从这里的说明中,它生成了一个证书文件,但是命令仍然没有接受它,显示没有证书与私钥匹配
另一个答案建议生成公钥,我也这样做了,但当我将其用作-in
参数时,它仍然显示没有证书与私钥匹配
,我不明白,因为这个公钥是使用以下命令从私钥生成的:openssl rsa -in privkey.pem -pubout > key.pub
编辑: 我已经在下面发布了一个答案,但是正如我提到的,我无法验证这些信息是否正确或者是否有效。如果有人有任何进一步的信息,请告诉我。