【问题标题】:How to convert a DER file to a PEM file?如何将 DER 文件转换为 PEM 文件?
【发布时间】:2022-01-10 04:30:50
【问题描述】:

我有一个公钥 DER 文件,我希望将它与 PEM 文件协调,但出现错误,Google 没有帮助

有什么想法吗?

alan@WW031779:/mnt/c/Users/alan/Downloads/RsaCtfTool$ openssl x509 -inform der -in pubkey.der -out certificate.pem
unable to load certificate
140024363618944:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
140024363618944:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:309:Type=X509
alan@WW031779:/mnt/c/Users/alan/Downloads/RsaCtfTool$ openssl x509 -in pubkey.der -inform DER -out private.pem -outform PEM
unable to load certificate
140228465136256:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
140228465136256:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:309:Type=X509

即使是简单的事情

openssl x509 -in pubkey.der -out cert.pem

给我

unable to load certificate
139881925907072:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE

我尝试按照以下建议使用 pkey,但得到了

139641461281408:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
139641461281408:error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:572:
139641461281408:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
139641461281408:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:309:Type=RSAPrivateKey
139641461281408:error:04093004:rsa routines:old_rsa_priv_decode:RSA lib:../crypto/rsa/rsa_ameth.c:133:
139641461281408:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
139641461281408:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:309:Type=PKCS8_PRIV_KEY_INFO

还有 rsa

alan@WW031779:/mnt/c/Users/alan/Downloads/RsaCtfTool$ openssl rsa -inform der -in pubkey.der -out certificate.pem
unable to load Private Key
140404504073536:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
140404504073536:error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:572:
140404504073536:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
140404504073536:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:309:Type=RSAPrivateKey
140404504073536:error:04093004:rsa routines:old_rsa_priv_decode:RSA lib:../crypto/rsa/rsa_ameth.c:133:
140404504073536:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
140404504073536:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:309:Type=PKCS8_PRIV_KEY_INFO
alan@WW031779:/mnt/c/Users/alan/Downloads/RsaCtfTool$ openssl rsa -in pubkey.der -out cert.pem
unable to load Private Key
140227099890304:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY
alan@WW031779:/mnt/c/Users/alan/Downloads/RsaCtfTool$ openssl rsa -in pubkey.der -inform DER -out private.pem -outform PEM
unable to load Private Key
140152776102528:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
140152776102528:error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:572:
140152776102528:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
140152776102528:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:309:Type=RSAPrivateKey
140152776102528:error:04093004:rsa routines:old_rsa_priv_decode:RSA lib:../crypto/rsa/rsa_ameth.c:133:
140152776102528:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1149:
140152776102528:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:309:Type=PKCS8_PRIV_KEY_INFO

我的 DER 文件的内容在这里 https://ghostbin.com/nrsmD 和下面的 sn-p

【问题讨论】:

  • openssl x509 用于 X.509 证书(因此得名)。使用openssl pkey
  • 添加了我在尝试此@SteffenUllrich 时得到的内容 - 加载更多错误
  • 看起来您有一个 RSA 密钥 - 然后使用 openssl rsa。不幸的是,密钥的存储方式有很多种 - DER 与 PEM 不是唯一的变体,但在 DER 等中也有不同的方式来获取密钥。
  • 怕不是@SteffenUllrich - 再次更新
  • 你能不能只提供一把钥匙,让人们可以更深入地了解内部?请注意,屏幕截图没有任何帮助

标签: ssl openssl pem


【解决方案1】:

在多次尝试将 DER 转换为 PEM 后,OP 提供了有问题的 DER 文件。 Base64 编码的样子是这样的:

BEGINPUBLICKEYMIIB...AwENDPUBLICKEY

开头的 BEGINPUBLICKEY 和 ENDPUBLICKEY 看起来很可疑。显然有人拿了 PEM 格式的公钥并简单地将其从 base64 转换,然后声称这是 DER 格式。只是它不是,因为从 base64 解码时不应该包含前导 -----BEGIN PUBLIC KEY----- 和最终 -----END PUBLIC KEY-----,因此只有它们之间的部分应该被解码以到达 DER。

通过删除错误的 BEGINPUBLICKEY 和 ENDPUBLICKEY 修复 base64 编码,然后使用== 正确填充剩余的 base64 编码后,成功生成正确的 DER 文件。

$  openssl base64 -d -in pubkey.b64 -out pubkey.der

然后可以将其转换为适当的 PEM

$  openssl pkey -pubin -inform der -in pubkey.der -out pubkey.pem

【讨论】:

    猜你喜欢
    • 2019-08-17
    • 2019-05-24
    • 2016-07-15
    • 2017-01-27
    • 1970-01-01
    • 2017-07-01
    • 2018-07-30
    • 1970-01-01
    • 2016-01-30
    相关资源
    最近更新 更多