当前位置: 首页 > 面试题库 >

如何将Java的私钥文件转换为.net x509Certificate2

阚允晨
2023-03-14
问题内容

我正在编写一个使用Java
Web服务的.NET客户端应用程序,并且需要对已发送的请求进行签名(与这个其他问题有关)。

我已经获得了private.key文件(和.X509证书)和Java源示例。证书看起来像服务的公共密钥,而private.key是我用来签署请求的密钥。

在Java源代码中,我可以看到它们将文件转换为字节数组,并将其传递给PKCS8EncodedKeySpec类的构造函数。

有点谷歌搜索表明此文件是私钥哈希(尽管我可能错了)。

有什么方法可以在.Net中使用它或将其转换为.Net可以使用的东西?

该链接提到了转换公钥/私钥,但是我没有两者,或者是否可行。有人有更多信息需要处理吗?比如这个文件到底是什么?

如果我将其读取为字节数组并将其转换为字符串,则会得到十六进制的负载(例如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-通知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

还有其他建议吗?


问题答案:

以下命令将其转换为可在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文件-系统将提示您输入密码,以保护

openssl pkcs12 -export -inkey private.pem -in public.pem -out mycert.p12

pkcs12可以直接在Windows中使用。



 类似资料:
  • 让我先解释一下我的问题。我从CA购买了一个证书,并使用以下格式生成csr和私钥: 有趣的是,在aws文档页面上,他们显示的示例私钥以“------开始RSA私钥-------”开头 有没有办法使用OpenSSL将我的私钥转换为RSA私钥?

  • 我有一个OpenSSH格式的私钥文件: 但我需要RSA格式: 在终端我会这样做: 但我需要用Java来做。 我尝试使用org.bouncycastle.openssl.PEMWriter,但我无法解决如何将我的输入键(作为输入字符串)转换为可传递给PEMWriter的Private ateKey对象。

  • 问题内容: 我需要签署Android应用程序()。 我有档案 我把它转化为通过Internet Explorer文件,然后转换到使用密钥工具。然后,我尝试用jarsigner 签名,但是它说.keystore不包含私钥。 我做错了什么? 问题答案: 使用JDK 1.6或更高版本 贾斯汀(Justin)在下面的评论中指出,仅keytool能够使用以下命令来执行此操作(尽管仅在JDK 1.6和更高版本

  • 我需要用java生成openssh格式的密钥对。 我使用java中的KeyPairGenerator生成了一个公私密钥对,并将其保存到一个文件中: 但是,如果我尝试使用这个与ssh-keygen我得到一个"失败加载密钥private.key:无效格式" 如何将PKCS#8私钥转换为openssh格式或生成openssh格式的密钥对?

  • 问题内容: 我正在使用DKIM for JavaMail与DKIM签署外发邮件。 我的私人DKIM密钥是使用生成的,如下所示: DKIM for JavaMail库需要DER格式的私有DKIM密钥,如其自述文件所述: DKIM for JavaMail需要DER格式的私钥,您可以使用openssl转换PEM密钥: 我正在寻找一种避免必须使用openssl将密钥转换为DER格式的方法。相反,我想直接

  • 问题内容: 我有一个包含一些非utf8特征的文件(例如“ ISO-8859-1”),因此我想将该文件(或读取的)转换为UTF8编码,我该怎么办? 代码是这样的: 编辑:放置一个编码示例 问题答案: 在那里,文本已解码。您可以通过simmetric Writer / OutputStream方法使用您喜欢的编码(例如UTF-8)来编写它。