我在MacOS ElCaptain上创建了一个p12文件,通过openssl命令使用.pem
和.key
文件:
openssl pkcs12 -export -in <PEM_file>.pem -inkey <PRIVATE_KEY>.key -out <FILENAME>.p12
一切顺利。我能够使用这个p12进行cURL调用。
当我在我的Ubuntu 14.04.5 LTS(具有相同的.pem
和.key
)上做同样的事情时,当我使用带有p12的cURL时,我开始收到此消息:
curl: (58) unable to use client certificate (no key found or wrong pass phrase?)
我缺少什么?
答案 0 :(得分: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
)转换回来。