文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


25.6.15.3 使用 TLS 连接

创建 CA 和证书后,您可以通过运行 ndb_mgm 客户端并使用 --test-tls 来测试与管理服务器的 TLS 连接是否可用,如下所示

$> ndb_mgm --test-tls
No valid certificate.

如果客户端可以使用 TLS 连接,则会生成一条适当的消息。您可能需要包含其他 ndb_mgm 选项(如 --ndb-tls-search-path)来帮助建立 TLS 连接,如下所示

$> ndb_mgm --test-tls --ndb-tls-search-path="CA:keys"
Connected to management server at localhost port 1186 (using TLS)

如果客户端在不使用 TLS 的情况下连接,也会类似于下面所示的方式进行指示

$> ndb_mgm
Connected to management server at localhost port 1186 (using cleartext)
$>

您可以通过对集群进行滚动重启来使集群使用通过 ndb_sign_keys 创建的 CA 和证书,从管理节点开始,应使用 --ndb-tls-search-path 选项重启管理节点。之后,重启数据节点,同样使用 --ndb-tls-search-path--ndb-tls-search-path 也支持 mysqld 作为集群 API 节点运行。

为了使 TLS 能够正常工作,每个连接到集群的节点都必须具有有效的证书和密钥。这包括数据节点、API 节点和实用程序。多个节点可以使用相同的证书和密钥文件。

数据节点记录 TLS 连接并包含所用证书文件的完整路径,如下所示

$> ndbmtd -c localhost:1186 --ndb-tls-search-path='CA:keys'
2023-12-19 12:02:15 [ndbd] INFO     -- NDB TLS 1.3 available using certificate file 'keys/ndb-data-node-cert'
2023-12-19 12:02:15 [ndbd] INFO     -- Angel connected to 'localhost:1186'
2023-12-19 12:02:15 [ndbd] INFO     -- Angel allocated nodeid: 5

您可以通过检查 TLS INFO 命令在 ndb_mgm 客户端中的输出,来验证集群节点是否正在使用 TLS 连接,如下所示

$> ndb_mgm --ndb-tls-search-path="CA:keys"
-- NDB Cluster -- Management Client --
ndb_mgm> TLS INFO
Connected to management server at localhost port 1186 (using TLS)
 
Main interactive connection is using TLS
Event listener connection is using TLS
 
Server reports 6 TLS connections.

  Session ID:          32
  Peer address:        ::
  Certificate name:    NDB Node Dec 2023
  Certificate serial:  39:1E:4A:78:E5:93:45:09:FC:56
  Certificate expires: 21-Apr-2024
 
  Session ID:          31
  Peer address:        127.0.0.1
  Certificate name:    NDB Node Dec 2023
  Certificate serial:  39:1E:4A:78:E5:93:45:09:FC:56
  Certificate expires: 21-Apr-2024
 
  Session ID:          30
  Peer address:        127.0.0.1
  Certificate name:    NDB Node Dec 2023
  Certificate serial:  39:1E:4A:78:E5:93:45:09:FC:56
  Certificate expires: 21-Apr-2024
 
  Session ID:          18
  Peer address:        127.0.0.1
  Certificate name:    NDB Data Node Dec 2023
  Certificate serial:  57:5E:58:70:7C:49:B3:74:1A:99
  Certificate expires: 07-May-2024
 
  Session ID:          12
  Peer address:        127.0.0.1
  Certificate name:    NDB Data Node Dec 2023
  Certificate serial:  57:5E:58:70:7C:49:B3:74:1A:99
  Certificate expires: 07-May-2024
 
  Session ID:          1
  Peer address:        127.0.0.1
  Certificate name:    NDB Management Node Dec 2023
  Certificate serial:  32:10:44:3C:F4:7D:73:40:97:41
  Certificate expires: 17-May-2024
 
 
    Server statistics since restart
  Total accepted connections:        32
  Total connections upgraded to TLS: 8
  Current connections:               6
  Current connections using TLS:     6
  Authorization failures:            0
ndb_mgm>

如果 Current connectionsCurrent connections using TLS 相同,则表示所有集群连接都在使用 TLS。

为所有节点建立 TLS 连接后,您应该将 TLS 设置为严格要求。对于客户端,您可以通过在每个集群主机的 my.cnf 文件中设置 ndb-mgm-tls=strict 来实现。通过在集群 config.ini 文件的 [mgm default] 部分中设置 RequireTls=true,然后对集群进行滚动重启以使更改生效,从而在管理服务器上强制执行 TLS 要求。对于数据节点也执行此操作,通过在配置文件的 [ndbd default] 部分中设置 RequireTls=true;之后,对集群执行第二次滚动重启以使更改对数据节点生效。启动 ndb_mgmd 并使用 --reload--config-file 选项(两次),以确保管理服务器读取两次配置文件更改中的每一个。

要替换私钥,请使用 ndb_sign_keys --create-key 创建新的密钥和证书,并使用 --node-id--node-type 选项(如果需要)来将替换限制为单个节点 ID、节点类型或两者。如果工具找到现有的密钥和证书文件,它会将这些文件重命名以反映其已停用的状态,并将新创建的密钥和证书保存为活动文件;下次节点重启时,将使用这些新文件。

要替换证书而不替换私钥,请使用 ndb_sign_keys 而不提供 --create-key 选项。这会为现有密钥创建新的证书(不替换密钥),并停用旧证书。

ndb_sign_keys 也支持远程密钥签名。使用 SSH,--remote-CA-host 选项以 user@host 格式提供 CA 主机的 SSH 地址。默认情况下,本地 ndb_sign_keys 进程使用系统 ssh 实用程序和地址在远程主机上运行 ndb_sign_keys,并使用正确的选项执行所需的签名。或者,如果 --remote-openssl=true,则远程主机上使用 openssl 而不是 ndb_sign_keys

使用远程签名时,通过网络发送的数据是 PKCS#10 签名请求,而不是私钥,私钥永远不会离开本地主机。