使用 p12 文件调用 "curl: (58) unable to use client certificate"

Getting "curl: (58) unable to use client certificate" with calls using p12 file

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

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

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

当我在我的 Ubuntu 14.04.5 LTS(具有相同的 .pem.key)上执行相同操作时,当我将 cURL 与p12:

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

我错过了什么?

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

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