C++ OpenSSL和可信系统认证

C++ OpenSSL和可信系统认证,c++,linux,openssl,C++,Linux,Openssl,因此,我已经知道如何使用SSL\u CTX\u load\u verify\u locations()指定受信任证书的位置。现在,文件说明如下: SSL_CTX_load_verify_locations()指定CTX的位置,位于 哪些CA证书用于验证目的。这个 通过CAfile和CApath提供的证书是可信的 还说, 查找CA证书时,OpenSSL库将首先进行搜索 CAfile中的证书,然后是CApath中的证书 那很好。但是没有提到驻留在OPENSSLDIR中的受信任系统证书 CAfile和

因此,我已经知道如何使用
SSL\u CTX\u load\u verify\u locations()
指定受信任证书的位置。现在,文件说明如下:

SSL_CTX_load_verify_locations()指定CTX的位置,位于 哪些CA证书用于验证目的。这个 通过CAfile和CApath提供的证书是可信的

还说,

查找CA证书时,OpenSSL库将首先进行搜索 CAfile中的证书,然后是CApath中的证书

那很好。但是没有提到驻留在OPENSSLDIR中的受信任系统证书

  • CAfile和CApath都失败后是否检查系统证书
  • 调用
    SSL\u CTX\u set\u default\u verify\u path()
    是否覆盖
    SSL\u CTX\u load\u verify\u locations()
    ?或者它们是并排工作的,即受信任的系统证书和CAfile和CApath指定的证书
  • 如果使用
    SSL\u CTX\u get\u cert\u store()?是否只检查了存储证书?在这种情况下,是否仍要禁用/启用检查受信任的系统证书

  • 好的。。所以我尝试了一下,找到了我需要知道的东西。
    设置:
    -简单的客户端和服务器,两侧均启用对等验证
    -我创建了两个CA。让我们称它们为SS(自签名)和TR(可信)。
    -SS用于创建客户端(SS_C)和服务器(SS_S)证书。
    -TR用于创建客户端(TR_C)和服务器(TR_S)证书。
    -TR CA被散列并添加到默认CA目录中

    万无一失的测试:
    -除非我指定
    CAfile

    -
    openssl验证TR_C和TR_S成功
    
    如期而至

    客户端/服务器基本测试:
    -没有验证路径调用:SS失败--TR失败
    -调用
    SSL\u CTX\u set\u default\u verify\u path
    :SS失败--TR成功
    -调用
    SSL\u CTX\u load\u verify\u locations
    ,将SS作为CAfile:SS成功--TR失败
    如期而至


    现在,让我们来看看更有趣的东西。
    调用
    SSL\u CTX\u set\u default\u verify\u路径
    SSL\u CTX\u load\u verify\u位置

    在这种情况下,对
    SSL\u CTX\u load\u verify\u位置的调用总是以SS作为CAfile。
    -TR成功--不考虑调用的顺序
    -SS成功——无论调用顺序如何
    有趣的结果——至少对我来说
    现在,我可以预期使用证书存储也会起作用

    使用
    X509\u存储
    而不是
    SSL\u CTX\u加载\u验证\u位置

    在本例中,我创建了SS CA的字节数组,获得了上下文的证书存储,并将SS CA添加到其中。
    -仅获取上下文的存储并将SS CA添加到其中:SS成功--TR失败
    -仅获取上下文的存储(以测试它是否添加默认的受信任证书):SS失败--TR失败
    -调用
    SSL\u CTX\u set\u default\u verify\u path
    +获取上下文的存储并将SS CA添加到其中:SS成功--TR成功
    伟大的它确实有效