0

我已经使用以下内容转换了 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. 这行得通,我以一个带有 bot 证书和密钥的文件结束,它通过 SOAP 连接到 API,但正如我所说的 DER 到 PEM 并没有给我一个可以工作的证书。

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

4

2 回答 2

0

默认情况下,不转换公钥。

但是您可以通过添加参数-pubkey来导出它

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

将为您提供如下 PEM 文件:

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

参考:X509 文档

于 2018-01-09T12:08:51.430 回答
0

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

于 2018-01-09T15:25:43.233 回答