如何让libcurl在Mac Keychain中查找证书

时间:2011-09-16 01:10:44

标签: macos security https libcurl keychain

我的代码正在尝试访问HTTPS服务器,并且它有自己的证书。例如,IP是“10.0.1.101”。

如果我浏览Safari并访问“http://10.0.1.101”,一切都没问题。我为这个URL做了一个简单的curl_easy_perform(),可以从HTTP URL中提取数据。凉。

然后我尝试访问“https://10.0.1.101”(是的,HTTPS),并且从Safari,我接受证书并给它一个“信任”选项,然后,Safari访问HTTPS URL就可以了

因此证书已添加到Mac Keychain但是当我在HTTPS URL上尝试curl_easy_perform()时,它仍然返回CURLE_SSL_CACERT。 libcurl无法使用已知的CA证书对HTTPS证书进行身份验证。

libcurl的证书检查和Mac Keychain之间缺少什么链接?甚至还有一个链接?是否有可能使libcurl查看Mac Keychain以获取证书?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:4)

不。构建为使用OpenSSL的libcurl只能从单个PEM文件或已经准备好OpenSSL风格的CA证书目录中读取CA证书。

实施Mac Keychain没有特别的魔力。

答案 1 :(得分:4)

在Mac OS上,“新” curl不能“看”系统钥匙串数据库(旧的curl版本在-E选项下工作得很好)。

您仍可以在新版本的Mac OS上使其与curl一起使用:

brew install curl

(安装可与从钥匙串读取的客户端证书一起使用的curl版本)

然后类似:

/usr/local/opt/curl/bin/curl -E wlad https://mail.securedbyclientcertificate.com/access/

(在-E中,您在钥匙串数据库中键入客户证书的名称)

Mac OS将询问您从钥匙串读取的权限,输入MacOS密码并选择“始终允许”。