从 MySQL 8.0.29 开始,服务器默认支持 SSL 会话重用,但仅在用户启用该功能后的可配置超时期限内。所有 MySQL 客户端应用程序都支持会话重用。有关服务器端和客户端操作的说明,请参阅重用 SSL 会话。
本节介绍 C 应用程序如何使用 C API 功能为加密连接启用会话重用。
SSL 会话重用的工作方式如下:
随着活动的 SSL 连接正在进行,您的应用程序可以通过调用请求当前的 SSL 会话数据
mysql_get_ssl_session_data()
。该调用返回一个指向内存中对象的指针,该对象目前是会话的 PEM 序列化为 ASCII 字符串。然后您的应用程序将指针传递给 它正在构建的新连接中使用
mysql_options()
的MYSQL_OPT_SSL_SESSION_DATA
选项(在预连接阶段)。在运行时,应用程序会像往常一样连接。此时,先前的会话有可能被重用。您的应用程序可以通过调用 来确定会话是否被重新用于新连接
mysql_get_ssl_session_reused()
。TRUE
如果存在会话并且它被重用,则 调用返回。在您的应用程序不再需要该指针后,重要的是通过调用释放它
mysql_free_ssl_session_data()
。
MySQL 使用随机的 TLS context-related context ID,这也适用于会话重用。对于 TLS 1.3,当前面描述的调用序列发生时,OpenSSL 使用预共享密钥进行会话重用。相反,对于 TLS 1.2,OpenSSL 使用会话票证。