rad*_*adj 10 security macos https keychain libcurl
我的代码试图访问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以获取证书?如果是这样,怎么样?
不。为使用 OpenSSL 构建的 libcurl 将仅从单个 PEM 文件或已准备好 OpenSSL 样式的 CA 证书目录中读取 CA 证书。
Mac Keychain 的实现没有什么特别的魔法。
小智 5
curlMac OS上的“新” 不会“看”系统钥匙串数据库(旧的curl版本与-E选件配合使用时效果很好)。
您仍然可以使其curl在新版本的Mac OS上使用:
brew install curl
Run Code Online (Sandbox Code Playgroud)
(安装与从钥匙串读取的客户端证书一起使用的curl版本)
然后是这样的:
/usr/local/opt/curl/bin/curl -E wlad https://mail.securedbyclientcertificate.com/access/
Run Code Online (Sandbox Code Playgroud)
(在“ -E钥匙串”数据库中键入客户证书的名称)
Mac OS将询问您从钥匙串读取的权限,键入您的MacOS密码,然后选择“始终允许”。
在当前版本的 MacOS 中,您可以使用环境变量告诉安装的系统curl使用钥匙串CURL_SSL_BACKEND,例如使用钥匙串中的命名客户端证书(它将弹出钥匙串身份验证对话框):
CURL_SSL_BACKEND=secure-transport curl --cert "My Cert" htps://10.0.1.101/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3307 次 |
| 最近记录: |