我已经使用OpenSSL为Windows x64构建了libcurl。如果我使用libcurl命令指定CA Info,如下所示,我可以通过https发布我的数据。
curl_easy_setopt(curl_handle, CURLOPT_CAINFO, "C:\\cacert.pem");
我的问题是关于此处“证书验证”标题下的选项3:https://curl.haxx.se/docs/sslcerts.html
3)将服务器的CA证书添加到现有的默认CA证书库。可以使用以下配置选项在编译时更改默认CA证书存储:
- with-ca-bundle = FILE:将指定的文件用作CA证书存储区。需要将CA证书以PEM格式连接到此文件中。
- with-ca-path = PATH:使用指定的路径作为CA证书存储区。 CA证书需要作为单独的PEM文件存储在此目录中。在那里添加文件后,您可能需要运行c_rehash。
这些设置是仅适用于命令行还是可以在编译时配置libcurl以始终使用相同的CA信息?
谢谢!
答案 0 :(得分:2)
这些设置是仅适用于命令行还是可以在编译时配置libcurl以始终使用相同的CA信息?
cURL具有相同的编译时设置。更准确地说,它们是Autotools选项。
curl-7.57.0$ ./configure --help
`configure' configures curl - to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
...
--with-ca-bundle=FILE Path to a file containing CA certificates (example:
/etc/ca-bundle.crt)
--without-ca-bundle Don't use a default CA bundle
--with-ca-path=DIRECTORY
Path to a directory containing CA certificates
stored individually, with their filenames in a hash
format. This option can be used with OpenSSL, GnuTLS
and PolarSSL backends. Refer to OpenSSL c_rehash for
details. (example: /etc/certificates)
--without-ca-path Don't use a default CA path
--with-ca-fallback Use the built in CA store of the SSL library
--without-ca-fallback Don't use the built in CA store of the SSL library
我有时会在像CentOS 5这样的旧系统上测试cURL。我发现下载更新的cacert.pem
最简单,然后使用--with-ca-bundle
。
如果要使用--with-ca-path
,则表示每个证书都经过哈希处理。因此,您将拥有一个包含120或150个文件的目录。这些文件的名称将为NNNNNNNN.0
,NNNNNNNN.1
等。 NNNNNNNN
将是一个哈希值,并通过递增后缀来解决冲突。
我保留了我的脚本,用于在Build-Scripts | build-curl.sh在线构建cURL。