2016-05-31 596 views
3

我有一个命令行应用程序正在使用libcurl-4 dll's,目前我可以通过将我的CA证书放入我的工作目录并将其名称传递给CUTLOPT_CAINFOCURLOPT_SSLCERT./前缀到他们的名字。配置cURL使用默认系统证书存储

但是,我的工作是让cURL不使用当前目录中的内容,而是使用存储在我的计算机系统存储中的证书。

从阅读cURL的文档我明白,如果您配置它没有给出指定的默认ca-bundleca-path ti将“自动检测设置”。

而且该CURLOPT_CAINFO是默认设置为“特定的内置系统”

因此,谁能帮助我了解:

  1. 如果在配置时,卷曲没有指定,是它检测系统存储的默认路径?或者卷曲使用自己的系统商店路径?

  2. 你给curl_easy_setopt(m_curlHandle, CURLOPT_CAINFO, *<value>)做什么值使CURLOPT_CAINFO去使用它的默认值?

任何帮助表示赞赏,因为我仍然在学习这一切如何工作。

谢谢。

回答

3

OpenSSL不支持使用Windows拥有的“CA证书存储”。如果您希望curl构建使用该证书存储,则需要重新构建curl以使用schannel后端,这是默认情况下也使用Windows证书存储的Windows本机版本。

如果您决定继续使用OpenSSL,您必须简单地在PEM文件或特制目录中提供CA证书,因为Windows不提供使用该格式的系统存储,您必须从某处获得合适的存储或者想出如何将Windows证书存储转换为PEM格式。

+0

是的,谢谢你的帮助。昨天晚些时候,我发现OpenSSL不支持系统商店,并且自建立cURL以使用winssl。 但是,我现在有SSL/TLS握手和接收http错误35问题。 通过阅读schannel.c文件后,我偶然发现我认为是schannel不想发送客户端证书的问题。 (见行495) –