我的代码正在尝试访问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以获取证书?如果是这样,怎么样?
答案 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密码并选择“始终允许”。