首页 > 解决方案 > c++ openssl 1.1.0l:使用单个 x509 存储支持不同的自签名证书

问题描述

首先我需要提到我是openssl的新手。

我在我正在测试的服务器应用程序中遇到了以下行为。在服务器中:

  1. 创建一个 x509 证书存储。
  2. 添加 2 个不同的自签名证书。
  3. 连接 2 个不同的客户端,每个客户端都有一个自签名证书。

结果:直到其证书最后添加到证书存储的客户端连接并被验证,第二次客户端验证失败。

是否有防止这种排序的配置?无论连接顺序如何,都将验证具有证书存储中证书的任何客户端?

添加一些简化的代码来澄清:

SSL_CTX *ctx = SSL_CTX_new(SSLv23_server_method());  
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, nullptr);  

X509 * cert1 = PEM_read_X509(certFile1, nullptr, nullptr, nullptr);  
X509 * cert2 = PEM_read_X509(certFile2, nullptr, nullptr, nullptr);  
X509_STORE * certStore = SSL_CTX_get_cert_store(ctx);  

X509_STORE_add_cert(certStore, cert1);  
X509_STORE_add_cert(certStore, cert2);  

标签: c++sslopensslx509

解决方案


推荐阅读