如何将私钥文件从Java转换为.net x509Certificate2
我正在编写一个.NET客户端应用程序,它使用Java Web服务并需要签署已发送的请求(与此其他问题相关 )。
我已经提供了private.key文件(和.X509证书)和Java源代码示例。 证书看起来像服务的公钥,private.key是我用来签署请求的。
在Java源代码中,我可以看到它们将文件转换为字节数组并将其传递给PKCS8EncodedKeySpec类的构造函数。
一些谷歌搜索表明这个文件是私钥哈希(虽然我可能是错的)。
有没有办法在.Net中使用它或将其转换为.Net可以使用的东西?
此链接提到转换公钥/私钥,但我没有,或者它是否有效。 有没有人有更多的信息可供使用? 比如这个文件究竟是什么?
如果我将其作为字节数组读入并将其转换为字符串,我会加载HEX(例如AA-BB-06等),但无论我使用何种编码,我都无法将其转换为任何有用的内容。
该文档表明它符合PKCS#8标准。
我试过(由@gtrig建议)命令:
openssl rsa -in pkcs8privatekey.der -inform der -out privatekey.pem
但这给了我以下内容:
unable to load Private Key 32096:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1306: 32096:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:830: 32096:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:749:Field=n, Type=RSA 32096:error:0D09A00D:asn1 encoding routines:d2i_PrivateKey:ASN1 lib:d2i_pr.c:99:
我也遇到类似NET和PEM -inform args的错误。
和:
openssl asn1parse -in private.key
给我错误:
"Error: offset too large"
我刚刚发现,如果我将它转换为基本64字符串
Dim ba As Byte() = IO.File.ReadAllBytes("C:\private.key") Dim toString1 As String = System.Convert.ToBase64String(ba)
它给了我一个字符串,它启动MIICdgIBADANB
,长度为924个字符。
尝试以下命令给了我
openssl rsa -in private.key -text -noout unable to load Private Key 17978:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expec ting: ANY PRIVATE KEY
还有什么建议?
它可能不是私钥的“哈希”。 它很可能是PKCS#8格式的私钥。
您可以使用openssl命令行工具创建PKCS#12密钥库,然后该密钥库应该可用于构造X509Certificate2对象。
首先,您可能需要将私钥从DER转换为PEM格式,这也可以在openssl中完成:
openssl rsa -in pkcs8privatekey.der -inform der -out privatekey.pem
然后使用以下命令创建PKCS#12密钥库:
openssl pkcs12 -export -name myalias -in mycert.crt -inkey privatekey.pem -out keystore.p12
最后,您应该能够将其导入X509Certificate2对象:
X509Certificate2 cert = X509Certificate2("C:\Path\keystore.p12", "password");
您可以使用关键工具UI 。 您需要知道他们给您的证书类型,通常是PEM的JKS密钥。
以下命令将其转换为可在Windows中使用的格式:
将私钥从pkcs8 / DER转换为PEM文件格式
openssl pkcs8 -nocrypt -in dealerPrivate.key -inform der -outform pem -out private.pem
将证书从x509 / DER转换为PEM文件格式
openssl x509 -inform der -in dealerCertificate.x509 -out public.pem
将这两个文件合并到一个pkcs12文件中 – 系统将提示您输入密码来保护p12
openssl pkcs12 -export -inkey private.pem -in public.pem -out mycert.p12
pkcs12可以直接在windows中使用。