使用 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 .这些是您用作 input 到 openssl pkcs12 -export
的相同两个文件,或者您可以将它们连接起来并仅将其用于 --cert
(这可以工作,因为 PEM 格式标记每个块分开);如果你不再拥有它们,你可以使用 openssl pkcs12 -in foo.p12 -out foo.pem
(即 OMIT -export
)转换回来。
我通过 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 .这些是您用作 input 到 openssl pkcs12 -export
的相同两个文件,或者您可以将它们连接起来并仅将其用于 --cert
(这可以工作,因为 PEM 格式标记每个块分开);如果你不再拥有它们,你可以使用 openssl pkcs12 -in foo.p12 -out foo.pem
(即 OMIT -export
)转换回来。