代码之家  ›  专栏  ›  技术社区  ›  abhiarora

验证来自私有CA的证书的客户端程序?

  •  1
  • abhiarora  · 技术社区  · 10 年前

    我有一个使用OpenSSL库建立连接的C程序 httpbin.org 使用SSL/TLS。客户端程序能够与服务器建立连接。

    现在,我想连接到我自己的服务器,其证书由我们自己的私人或内部CA签名。在客户端,我想强制OpenSSL使用我们自己的CA进行证书验证。所以,我的问题是:

    如何使用库加载自己的CA证书,并强制其仅使用该CA来验证服务器证书?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Steffen Ullrich    10 年前

    根据您拥有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 .