【发布时间】:2011-09-16 01:10:44
【问题描述】:
我的代码正在尝试访问 HTTPS 服务器,并且它有自己的证书。例如,IP 为“10.0.1.101”。
如果我通过 Safari 访问“http://10.0.1.101”,一切正常。我为这个 URL 做了一个简单的 curl_easy_perform() 并且可以从 HTTP URL 中提取数据。很酷。
然后我尝试从 Safari 访问“https://10.0.1.101”(是的,HTTPS),我接受证书并为其提供“信任”选项,之后,Safari 访问 HTTPS URL 就可以了.
因此,证书已添加到 Mac 钥匙串中,但是当我在 HTTPS URL 上尝试 curl_easy_perform() 时,它仍然返回 CURLE_SSL_CACERT。 libcurl 无法使用已知 CA 证书验证 HTTPS 证书。
libcurl 的证书检查和 Mac 钥匙串之间缺少什么链接?甚至有链接吗?是否可以让 libcurl 查看 Mac 钥匙串以获取证书?如果有,怎么做?
【问题讨论】:
-
我们可以使用 CURLOPT_CAINFO 选项来指向一个钥匙串文件吗?
-
终端中有一个
security命令,我认为您可以使用该命令的输出来获取信任链。 (我不是证书或终端专家,在脚本中尝试过,它适用于 curl) -
@Marcelo Alves,谢谢。这看起来是一个很好的起点,但如果可以的话,你能分享一下你是如何做到的吗?
-
我已经在用户和系统钥匙串上尝试了“security add-trusted-cert PathToPEMFile.pem”,但 libcurl 仍然失败。
标签: macos security https libcurl keychain