2

我在我的 MacOS ElCaptain 上创建了一个 p12 文件,使用一个.pem.key文件通过 openssl 命令:

openssl pkcs12 -export -in <PEM_file>.pem -inkey <PRIVATE_KEY>.key -out <FILENAME>.p12

一切顺利。我能够使用这个 p12 进行 cURL 调用。

当我在我的 Ubuntu 14.04.5 LTS(使用相同的.pemand .key)上执行相同操作时,当我将 cURL 与 p12 一起使用时,我开始收到此消息:

curl: (58) unable to use client certificate (no key found or wrong pass phrase?)

我错过了什么?

4

1 回答 1

4

curl支持大约十几种不同的 SSL/TLS 实现,并且提供证书和密钥的方式因构建中使用的实现而异。使用curl -V(上 vee)检查。我猜,但不知道,MacOS 构建使用 SecureTransport;我在角落里的 Ubuntu 14.04.4 上的(标准)包肯定使用 OpenSSL。

根据手册页并在我的 Ubuntu 上通过实验确认,此版本需要PEM 格式文件,而不是 PKCS12。这两个文件与您用作 的输入的文件相同openssl pkcs12 -export,或者您可以将它们连接起来并将其用于--cert(这可以工作,因为 PEM 格式分别标记每个块);如果您不再拥有它们,您可以使用openssl pkcs12 -in foo.p12 -out foo.pem(即 OMIT -export)转换回来。

于 2016-10-21T18:43:03.243 回答