创建SSL后释放SSL_CTX是否安全

时间:2016-12-26 03:52:51

标签: ssl openssl

我实现的服务器可以在不重启的情况下重新加载SSL证书。因此,我需要创建一个新的SSL_CTX来替换旧的SSL_CTX。但是,如果仍然存在一些SSL会话(由前SSL_CTX创建),是否可以安全地释放旧会话?或者我必须使用像引用计数这样的技术吗?

1 个答案:

答案 0 :(得分:1)

  

或者我必须使用像引用计数这样的技术吗?

OpenSSL已经使用引用计数,因此您不必实现自己的引用计数。 SSL_CTX_free只会减少引用计数器,并且只有在没有对象仍在使用此CTX时才释放内存。来自documentation of SSL_CTX_free

  

SSL_CTX_free()递减ctx的引用计数,并删除ctx指向的SSL_CTX对象,并在引用计数达到0时释放已分配的内存。   它还调用间接受影响项目的free()ing过程(如果适用):会话高速缓存,密码列表,客户端CA列表,证书和密钥。