我有一个使用libcurl-4 dll的命令行应用程序,目前我可以通过将CA证书放在我的工作目录中并将它们的名称传递给CUTLOPT_CAINFO和CURLOPT_SSLCERT,并在它们的名称中加上./前缀来实现所有的工作。
但是,我正在做的是让cURL不使用当前目录中的内容,而是使用存储在我的计算机系统存储中的证书。
通过阅读cURL的文档,我了解到如果您没有给出指定的默认ca-bundle或ca-path配置它,ti将“自动检测一个设置”。
默认情况下,CURLOPT_CAINFO设置为“内置系统特定的”。
有谁能帮我理解:
curl_easy_setopt(m_curlHandle, CURLOPT_CAINFO, *<value> )什么值使CURLOPT_CAINFO使用它的默认值?任何帮助都是非常感谢的,因为我仍然在学习这一切是如何工作的。
谢谢。
发布于 2016-05-31 18:59:41
OpenSSL不支持使用Windows本身拥有的"CA证书存储“。如果您希望您的curl构建使用该cert存储,则需要重新构建curl以替代使用schannel后端(也称为"winssl"),这是默认也使用Windows证书存储的Windows本机版本。
如果您决定继续使用OpenSSL,那么您必须在PEM文件或巧尽心思构建的目录中提供CA证书,因为Windows没有使用这种格式提供系统存储,所以您必须从某个地方获得一个合适的存储,或者研究如何将Windows存储转换为PEM格式。
更新
从libcurl 7.71.0开始,由于将于2020年6月24日发布,它将在构建使用OpenSSL时获得使用Windows证书存储的能力。然后,您需要使用选项选项并在位掩码中设置正确的位: CURLSSLOPT_NATIVE_CA。
发布于 2020-05-07 04:56:48
自2018年4月起,对于想要使用Windows命令行下载文件的人,可以使用Curl.exe可执行文件。在Windows10Build 17063及更高版本中,包含了Curl ,,以便您可以直接从Cmd.exe或PowerShell.exe执行它。
curl.exe -V
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL 要小心使用PowerShell Cmdlet Invoke-WebRequest被命名为curl,因此取消这个CmdLet (Remove-item alias:curl)的别名或显式使用curl.exe。
据我所知,curl.exe是用Schannel (微软的本地TLS引擎)构建的,然后libcurl仍然执行对等证书验证,但是它使用的不是CA证书包,而是使用内置到操作系统中的证书。
curl.exe "https://www.7-zip.org/a/7z1805-x64.exe" --output c:\temp\7zip.exe
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1404k 100 1404k 0 0 1404k 0 0:00:01 --:--:-- 0:00:01 9002khttps://stackoverflow.com/questions/37551409
复制相似问题