MySQL路由器8.0  / 第 4 章 配置  /  4.4 TLS 配置

4.4 TLS 配置

重要的

本节是草稿,可能会发生变化。

在 8.0.23 之前,有两个 TCP 连接和一个 TLS 连接:

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

路由器按原样转发 TLS 数据包,并且可以使用这些路由器配置设置来配置此行为:

client_ssl_mode = PASSTHROUGH
server_ssl_mode = AS_CLIENT

PASSTHOUGH 的意思是“将所有内容转发到服务器”,让客户端和服务器决定是否要切换到 TLS。

从 8.0.23 开始,默认行为是:

client_ssl_mode = PREFERRED
server_ssl_mode = AS_CLIENT

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

TLS 端点配置

从 Router 8.0.23 开始,Router 可以接受 TLS 会话并向服务器打开一个新的 TLS 会话。例如:

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

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

要将 TLS 会话连接到服务器,路由器使用server_ssl_verify server_ssl_verify server_ssl_ca server_ssl_capath server_ssl_crl、 和 验证服务器的证书server_ssl_crlpath

笔记

TLSv1 和 TLSv1.1 连接协议已从 MySQL Router 8.0.26 开始弃用,对它们的支持可能会在未来版本中删除。

SSL 模式

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

两者都client_ssl_mode接受 server_ssl_modeDISABLED、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。在 Router 的情况下,Router 验证证书独立于server_ssl_mode; 相反,它完全基于连接是否加密,如果 server_ssl_verify未禁用,则在这种情况下进行验证。

其他选项包括server_ssl_dh_paramsclient_ssl_dh_paramsserver_ssl_dh_paramsclient_ssl_dh_paramsserver_ssl_curvesclient_ssl_curves

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