【问题标题】:OpenSSL: Unloading current trusted certificates and loading new certificate fileOpenSSL:卸载当前受信任的证书并加载新的证书文件
【发布时间】:2012-03-08 07:09:39
【问题描述】:

假设我已经启动并运行了 OpenSSL,并且我之前传入了一个文件,我将其称为捆绑包,其中包含使用 SSL_CTX_load_verify_locations() 的多个证书。

然后假设捆绑包已更新,可能包含新证书以及已删除的证书。我希望 OpenSSL 基本上重新初始化以使用更新包中的证书并停止使用它之前加载的旧证书。我的理解是 SSL_CTX_load_verify_locations() 只是附加到现有的可信证书集。

有谁知道如何让 OpenSSL 卸载它当前的一组可信证书?我想避免重新启动所有内容,并且尽可能避免创建新的上下文实例。

谢谢!

【问题讨论】:

    标签: openssl certificate ssl-certificate


    【解决方案1】:

    我注意到您想避免创建新上下文,但这似乎是最“干净”和最简单的解决方案,因为“SSL_CTX_load_verify_locations”将所有内容加载到“SSL_CTX”对象中,因此不适用于整个库.创建新上下文并使用“SSL_CTX_load_verify_locations”重新初始化它是最短路径。如果这不是一个选项,那么:

    1) SSL_CTX_load_verify_locations(SSL_CTX* ctx,....) 仅调用“X509_STORE_load_locations(ctx->cert_store)”,其中“ctx->cert_store”的类型为“X509_STORE*”

    2) 我建议查看“X509_STORE_free”函数的源代码 (crypto/x509/x509_lu.c) - 它完全符合您的要求:它遍历所有“X509_LOOKUP*” 'SSL_CTX' 中的对象并释放它们。还要看上面提到的对应的 'X509_STORE_load_locations' (crypto/x509/x509_d2.c)。

    警告:我没有尝试这样做(或任何类似的),我不确定 SSL* 对象(用于处理连接)或其他一些 OpenSSL 对象是不引用要重新初始化的数据。我建议先写一些简单的测试程序:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-29
      • 2022-01-25
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      • 1970-01-01
      相关资源
      最近更新 更多