使用 p12 文件调用“curl:(58)无法使用客户端证书”
Posted
技术标签:
【中文标题】使用 p12 文件调用“curl:(58)无法使用客户端证书”【英文标题】:Getting "curl: (58) unable to use client certificate" with calls using p12 file 【发布时间】:2016-10-21 16:46:50 【问题描述】:我在我的 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
)上执行相同操作时,当我将 cURL 与 p12 一起使用时,我开始收到此消息:
curl: (58) unable to use client certificate (no key found or wrong pass phrase?)
我错过了什么?
【问题讨论】:
【参考方案1】: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
(即省略-export
)转换回来。
【讨论】:
谢谢你,你拯救了我们的一天.. ;-) 在我的情况下,我还需要将 curl 更新到 7.29 以上的版本以上是关于使用 p12 文件调用“curl:(58)无法使用客户端证书”的主要内容,如果未能解决你的问题,请参考以下文章