我实现的服务器可以在不重启的情况下重新加载SSL证书。因此,我需要创建一个新的SSL_CTX来替换旧的SSL_CTX。但是,如果仍然存在一些SSL会话(由前SSL_CTX创建),是否可以安全地释放旧会话?或者我必须使用像引用计数这样的技术吗?
答案 0 :(得分:1)
或者我必须使用像引用计数这样的技术吗?
OpenSSL已经使用引用计数,因此您不必实现自己的引用计数。 SSL_CTX_free只会减少引用计数器,并且只有在没有对象仍在使用此CTX时才释放内存。来自documentation of SSL_CTX_free:
SSL_CTX_free()递减ctx的引用计数,并删除ctx指向的SSL_CTX对象,并在引用计数达到0时释放已分配的内存。 它还调用间接受影响项目的free()ing过程(如果适用):会话高速缓存,密码列表,客户端CA列表,证书和密钥。