【问题标题】:How to include CACert.pem with VS2015 curl project so that there is no need to specify CAINFO curl option?如何在 VS2015 curl 项目中包含 CACert.pem 以便无需指定 CAINFO curl 选项?
【发布时间】:2017-03-08 05:41:53
【问题描述】:

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

有没有办法将该文件包含在项目中,以便它包含在二进制文件中并且不需要显式指定 CAINFO 选项? 我相信有某种方法,因为没有设置 CAINFO 的相同调用在我使用系统 curl 库的 OSX 上工作。

【问题讨论】:

    标签: c++ curl visual-studio-2015 libcurl pem


    【解决方案1】:

    视情况而定!

    libcurl 本身可以构建为使用大量不同的 TLS 库,它们都有自己的小差异。魔鬼真的像往常一样在细节中。

    mac

    macOS 上的“本机”libcurl 是为使用内部“安全传输”TLS 库而构建的,默认情况下它使用 Apple 提供的内部“信任库”。因此,大多数应用程序不需要提供任何 CA 证书。

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

    窗口

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

    Windows 上为使用 OpenSSL 而构建的 libcurl - 这是最流行的 TLS 库选择 - 需要使用单独且提供的信任存储,因为它不会使用默认存储。然后,您可以提供该信任存储 或者 作为单独的文件传递给 libcurl ,您可以使用 CURLOPT_SSL_CTX_FUNCTION 回调设置它,如 curl 中的 cacertinmem example 所示网站。

    【讨论】:

    • 感谢您的解释。除了证书在后一种情况下对用户隐藏之外,设置 CA_INFO 或使用 SSL_CTX_FUNCTION 是否有任何区别?
    • 功能上没有技术差异,没有。但是,如果您的程序存在很长时间,您可能希望能够更新信任库...
    猜你喜欢
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2014-04-27
    • 1970-01-01
    相关资源
    最近更新 更多