我有一个使用 OpenSSL 库的 C 程序,它使用 SSL/TLS 建立到 httpbin.org
的连接。客户端程序能够与服务器建立连接。
现在,我想连接到我自己的服务器,其证书由我们自己的私有(private)或内部 CA 签名。在客户端,我想强制 OpenSSL 使用我们自己的 CA 进行证书验证。所以,我的问题是:
如何使用库加载我自己的 CA 证书并强制它仅使用该 CA 来验证服务器证书?
最佳答案
可以通过多种方式指定应该使用哪个 CA 进行验证,具体取决于您拥有 CA 的方式(即 X509 结构列表、单个文件、带证书的目录...)。由于最后一点在问题中没有详细说明,我将答案限制为最简单的情况:单个 CA 或单个文件中 PEM 格式的 CA 列表。可以使用 SSL_CTX_verify_location 将此文件设置为唯一用于验证的 CA 存储:
SSL_CTX_load_verify_locations(ctx, "ca.pem", NULL);
有关更多信息(如错误处理),请参阅 the documention和 examples on how to use it .
关于用于验证来自私有(private) CA 的证书的客户端程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40061815/