【问题标题】:Convert DER to PEM, no key part in the resulting file将 DER 转换为 PEM,结果文件中没有关键部分
【发布时间】:2018-01-09 11:55:10
【问题描述】:

我已经用类似这样的方式转换了 CER/DER 证书:

openssl x509 -inform der -in hostname.cer -out hostname.pem

生成的 PEM 文件仅包含:

-----BEGIN CERTIFICATE-----
... contents here.. 
-----END CERTIFICATE-----

但它没有包含关键部分,这正常吗?所以我不能在 PHP/SOAPClient 中使用它,因为它不会连接到主机。

另一方面,我已成功将 PFX/P12 格式转换为 PEM,生成的文件包含证书和密钥。但在上述 DER 格式证书的情况下,它没有。

我用来将 PFX 转换为 PEM 的是:

openssl pkcs12 -in ALEXANDRU_CATALIN.pfx -clcerts -nokeys -out ALEXANDRU_CATALIN_mycert.pem
openssl pkcs12 -in ALEXANDRU_CATALIN.pfx -nocerts -nodes -out ALEXANDRU_CATALIN_mykey.pem

然后将两个文件的内容合并到一个名为bundle.pem 的文件中。这行得通,我以一个带有机器人证书和密钥的文件结束,它通过 SOAP 连接到 API,但正如我所说的 DER 到 PEM 并没有给我一个可以工作的证书。

对此有什么想法吗?我错过了什么吗? DER 格式不包含密钥吗?我还需要别的吗?

【问题讨论】:

标签: ssl soap certificate private-key pkix


【解决方案1】:

DER 证书文件不包含私钥。所以没有私钥可以转换。只有 PFX 或“多 PEM”可以同时包含证书和私钥。

【讨论】:

    【解决方案2】:

    默认情况下不转换公钥。

    但是你可以通过添加参数 -pubkey

    来导出它
    openssl x509 -inform der -in hostname.cer -out hostname.pem -pubkey
    

    会给你一个 PEM 文件如下:

    -----BEGIN PUBLIC KEY-----
    {...}
    -----END PUBLIC KEY-----
    -----BEGIN CERTIFICATE-----
    {...}
    -----END CERTIFICATE-----
    

    参考:X509 documentation

    【讨论】:

    • 好的,但是在 PFX 到 PEM 中嗯我有证书和私钥,为什么在你的例子中是公钥?可以连接吗?抱歉,我不明白 DER 和 PFX 以及公钥/私钥之间的区别。当我连接到 SOAP API 时,它是否会起作用?
    • 无论如何我会尝试看看soap调用是否适用于以这种方式转换的证书。
    • 它没有按预期工作,我的意思是,它没有放入“公钥”部分。但整个故事是 1)我将 PFX 转换为 PEM,2)然后使用 sslshopper.com 将该 PEM 转换为 DER 3)最后尝试将 DER 转换回 PEM
    • 证书(以 DER 或 PEM 编码)不包含私钥。 *.pfx 文件是包含多个文件的 PCKS12 存档文件,大多数情况下是证书及其关联的私钥。
    猜你喜欢
    • 2022-01-10
    • 2017-07-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 2023-03-04
    • 2016-07-15
    • 1970-01-01
    • 2019-08-26
    相关资源
    最近更新 更多