本节为草稿,可能会有所更改。
默认行为是
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_cert
和 client_ssl_key
向 TLS 客户端呈现证书。
要连接 TLS 会话到服务器,路由器使用 server_ssl_verify
server_ssl_verify
server_ssl_ca
server_ssl_capath
server_ssl_crl
和 server_ssl_crlpath
验证服务器证书。
自 MySQL 路由器 8.0.26 起,TLSv1 和 TLSv1.1 连接协议已弃用,对它们的 support 可能会在未来版本中删除。
SSL 模式
由于有两个 TLS 会话(客户端和路由器之间;路由器和服务器之间),因此连接也可以处于两个独立状态。
client_ssl_mode
和 server_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
选项从 MySQL 客户端和 MySQL 服务器已知的“ssl_mode”中拆分出“VERIFY_CA”和“VERIFY_IDENTITY”。在 MySQL 客户端的情况下,VERIFY_CA 表示 ssl_mode=REQUIRED 并且要验证 CA|IDENTITY。在路由器的情况下,路由器独立于 server_ssl_mode
验证证书;相反,它纯粹基于连接是否已加密,以及 server_ssl_verify
是否未被禁用,在这种情况下,它将被验证。
其他选项包括 server_ssl_dh_params
、client_ssl_dh_params
、server_ssl_dh_params
、client_ssl_dh_params
、server_ssl_curves
和 client_ssl_curves
。
所有路由选项和附加信息可在 路由选项 中找到。