自从我从 Mavericks 升级到 Yosemite 后,我的 SSL 客户端证书在某些地方就停止工作了。它们在 Web 浏览器和 中仍然可以工作,但在和 Python库中wget
已停止工作。curl
requests
这有效:
$ wget https://localhost --certificate cert.pem --private-key private.pem
这不起作用:
$ curl https://localhost --cert cert.pem --key private.pem
curl: (58) SSL: Can't load the certificate "cert.pem" and its private key: OSStatus -25299
但是如果我将 pem 组合成 p12,它就可以起作用:
$ curl https://localhost --cert cert.p12:password
但是 Python 不支持 p12s,所以这不起作用:
import requests
print requests.get("https://localhost", cert=("cert.pem","private.pem")).content
它没有抱怨,但它也没有发送客户端证书。
答案1
简短回答:新版本的 CURL 现在使用 Apple 的安全传输 API 而不是 OpenSSL API,您需要使用 P12 格式的证书。