Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
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。对于mysqld作为集群API节点运行,--ndb-tls-search-path也被支持。

为了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>

如果 当前连接当前使用 TLS 的连接 相同,这意味着集群中的所有连接都在使用 TLS。

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

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

要替换证书而不替换私钥,请使用ndb_sign_keys,但不提供--create-key选项。这将为现有密钥创建一个新证书(而不是替换密钥),并退役旧证书。

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

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