libcurl的内联证书而不是使用外部包?

时间:2014-05-07 11:49:40

标签: c https ssl-certificate libcurl

我正在将libcurl用于小型c应用程序。该项目使用https并要求验证服务器和客户端证书。我不能使用选项来禁止验证,因为我在不安全的环境中工作。

我目前正在尝试验证服务器端证书。第一次尝试给了我一个预期的错误:

Peer certificate cannot be authenticated with given CA certificates

如所说的预期错误,我明白了这个消息的含义。我深入研究了libcurl的文档,发现它支持“证书捆绑”,并且年轻版本都附带了捆绑包。我找到的所有选项(以及所有解释)都是指在运行时读取的证书文件,显然建议在本地捆绑包中包含所需的CA证书。

相反,我更愿意将单个证书内联包含到应用程序中,以便编译。这对于这种特殊情况很有意义,因为应用程序只尝试访问单个硬编码的URL ,所以服务器。我接受如果服务器证书被更改,我必须替换应用程序的所有部署副本。但是我在文档中找不到任何选项。我更喜欢这种策略,因为它允许更紧凑的应用程序部署:单个文件而不是结构和运行时配置。

所以我的问题是:libcurl是否允许在编译时包含一个CA证书,可以在运行时使用而不必依赖外部捆绑包?

1 个答案:

答案 0 :(得分:1)

libcurl中,验证证书的部分由openssl处理。您可以使用SSL_CTX_use_certificate在运行时安装证书,或使用SSL_CTX_set_verify用您自己的身份覆盖SSL验证功能。

检查curlx.c以获取示例。