MySQL 路由器 8.4  /  配置  /  TLS 配置

4.4 TLS 配置

重要

本节为草案,如有更改,恕不另行通知。

默认行为是

client_ssl_mode = PREFERRED
server_ssl_mode = AS_CLIENT

如果客户端希望切换到 TLS 并且服务器支持 TLS,则会在客户端和路由器之间建立 TLS 连接。这与在没有路由器的情况下客户端和服务器之间的现有行为相匹配。

TLS 端点配置

MySQL 路由器接受 TLS 会话并打开到服务器的新 TLS 会话。例如

client <-> router              // TCP
           router <-> server   // TCP
client <-> router              // TLS
           router <-> server   // TLS

要接受来自客户端的 TLS 会话,路由器必须使用 client_ssl_certclient_ssl_key 向 TLS 客户端提供证书。

要将 TLS 会话连接到服务器,路由器使用 server_ssl_verify server_ssl_verify server_ssl_ca server_ssl_capath server_ssl_crlserver_ssl_crlpath 验证服务器的证书。

注意

从 MySQL 路由器 8.0.26 开始,TLSv1 和 TLSv1.1 连接协议已弃用,并且对它们的支将在未来版本中删除。

SSL 模式

因为有两个 TLS 会话(客户端和路由器之间;路由器和服务器之间),所以连接也可以有两个独立的状态。

client_ssl_modeserver_ssl_mode 都接受 DISABLED、PREFERRED 或 REQUIRED。此外,server_ssl_mode 接受 AS_CLIENT,client_ssl_mode 接受 PASSTHROUGH。

  • DISABLED:路由器不向客户端提供加密,客户端也无法将客户端-路由器连接切换到 TLS。如果客户端必须切换到 TLS,则可能会中止连接。

  • PREFERRED(默认):路由器接受来自客户端的 TLS 连接,但如果客户端不切换到加密也没关系。

  • REQUIRED:路由器接受来自客户端的 TLS 连接,如果连接在身份验证完成之前未切换到 TLS,则会失败。

  • PASSTHROUGH:表示“将所有内容转发到服务器”,并让客户端和服务器决定是否要切换到 TLS。这是路由器 8.0.23 之前的默认行为,并且仅被 client_ssl_mode 接受。

  • AS_CLIENT(默认):如果客户端-路由器连接已加密,则也加密路由器-服务器连接,否则不加密。此选项仅被 server_ssl_mode 接受。

其他相关选项

server_ssl_verify 选项将“VERIFY_CA”和“VERIFY_IDENTITY”从 MySQL 客户端和 MySQL 服务器已知的“ssl_mode”中分离出来。在 MySQL 客户端的情况下,VERIFY_CA 意味着 ssl_mode=REQUIRED 并验证 CA|IDENTITY。在路由器的情况下,路由器独立于 server_ssl_mode 验证证书;相反,它纯粹基于连接是否已加密以及 server_ssl_verify 是否不是 DISABLED,在这种情况下会对其进行验证。

其他选项包括 server_ssl_dh_paramsclient_ssl_dh_paramsserver_ssl_dh_paramsclient_ssl_dh_paramsserver_ssl_curvesclient_ssl_curves

所有路由选项和附加信息可在 路由选项 中找到。