如何在 VS2015 curl 项目中包含 CACert.pem 以便无需指定 CAINFO curl 选项?

How to include CACert.pem with VS2015 curl project so that there is no need to specify CAINFO curl option?

为了在 CURL* 上设置 CAINFO 选项,我目前包括从 https://curl.haxx.se/ca/cacert.pem 下载的 CACert.pem 文件和二进制文件。

有没有办法将该文件包含在项目中,使其在二进制文件中,而无需明确指定 CAINFO 选项? 我相信有一些方法,因为没有设置 CAINFO 的相同调用在我使用系统 curl 库的 OSX 上工作。

视情况而定!

libcurl 本身可以构建为使用大量不同的 TLS 库,它们都有自己的小差异。一如既往,细节决定成败。

mac

macOS 上的 "native" libcurl 是为使用内部 "secure transport" TLS 库而构建的,默认情况下它使用 Apple 的内部 "trust store"船。因此,大多数应用程序不需要提供任何 CA 证书。

然而,许多人也选择在 mac 上使用他们自己的自定义构建,然后它可能会使用其他 TLS 库(主要是因为原生 mac 的功能相当有限) .

windows

同样,为使用 schannel(原生 windows TLS 解决方案)而构建的 windows 上的 libcurl 可以使用 Windows 内部信任库。

Windows 上的一个 libcurl 是为使用 OpenSSL 而构建的,但是 - 这是最受欢迎的 TLS 库选择 - 需要一个单独的和提供的信任存储来使用,因为它不会使用默认的.然后,您可以提供该信任库 或者 作为单独的文件传递给 libcurl 您使用 curl 中的 CURLOPT_SSL_CTX_FUNCTION callback as show in the cacertinmem example 设置它网站。