17.5.2 组复制安全套接字层(SSL)支持
使用 SSL 保护组通信连接和恢复连接。以下各节说明如何配置连接。
为组复制恢复配置 SSL
通过常规的异步复制连接执行恢复。选择施主后,加入该组的服务器将构建异步复制连接。这都是自动的。
但是,在加入组的服务器连接到施主之前,必须已经创建了需要 SSL 连接的用户。通常,这是在预配置服务器加入组时设置的。
donor> SET SQL_LOG_BIN=0;
donor> CREATE USER 'rec_ssl_user'@'%' REQUIRE SSL;
donor> GRANT replication slave ON *.* TO 'rec_ssl_user'@'%';
donor> SET SQL_LOG_BIN=1;
假设已经在组中的所有服务器都设置了使用 SSL 的复制用户,则可以将加入组的服务器配置为在连接到供体时使用这些凭据。这是根据为组复制插件提供的 SSL 选项的值完成的。
new_member> SET GLOBAL group_replication_recovery_use_ssl=1;
new_member> SET GLOBAL group_replication_recovery_ssl_ca= '.../cacert.pem';
new_member> SET GLOBAL group_replication_recovery_ssl_cert= '.../client-cert.pem';
new_member> SET GLOBAL group_replication_recovery_ssl_key= '.../client-key.pem';
并通过配置恢复通道以使用需要 SSL 连接的用户的凭据。
new_member> CHANGE MASTER TO MASTER_USER="rec_ssl_user" FOR CHANNEL "group_replication_recovery";
new_member> START GROUP_REPLICATION;
为组通信配置 SSL
安全套接字可用于在组中的成员之间构建通信。此配置取决于服务器的 SSL 配置。因此,如果服务器配置了 SSL,则组复制插件也配置了 SSL。有关配置服务器 SSL 的选项的更多信息,请参阅加密连接的命令选项。下 table 显示了配置组复制的选项。
table17.2 SSL 选项
Server Configuration | 插件配置说明 |
---|---|
ssl_key | 密钥文件的路径。用作 Client 端和服务器证书。 |
ssl_cert | 证书文件的路径。用作 Client 端和服务器证书。 |
ssl_ca | 具有受信任的 SSL 证书颁发机构的文件的路径。 |
ssl_capath | 包含受信任的 SSL 证书颁发机构的证书的目录路径。 |
ssl_crl | 包含证书吊销列 table 的文件的路径。 |
ssl_crlpath | 包含已撤销证书列 table 的目录路径。 |
ssl_cipher | 在通过连接加密数据时使用的允许密码。 |
tls_version | 安全通信将使用此版本及其协议。 |
这些选项是组复制所依赖的 MySQL Server 配置选项。此外,还有以下特定于组复制的选项,用于在插件本身上配置 SSL。
- group_replication_ssl_mode-指定组复制成员之间的连接的安全状态。
table17.3 group_replication_ssl_mode 配置值
Value | Description |
---|---|
DISABLED | 构建未加密的连接(* default *)。 |
REQUIRED | 如果服务器支持安全连接,则构建安全连接。 |
VERIFY_CA | 与 REQUIRED 相似,但另外还要针对配置的证书颁发机构(CA)证书验证服务器 TLS 证书。 |
VERIFY_IDENTITY | 与 VERIFY_CA 类似,但还要验证服务器证书是否与尝试连接的主机匹配。 |
以下示例显示了一个示例 my.cnf 文件部分,该部分用于在服务器上配置 SSL 以及如何为组复制激活 SSL。
[mysqld]
ssl_ca = "cacert.pem"
ssl_capath = "/.../ca_directory"
ssl_cert = "server-cert.pem"
ssl_cipher = "DHE-RSA-AEs256-SHA"
ssl_crl = "crl-server-revoked.crl"
ssl_crlpath = "/.../crl_directory"
ssl_key = "server-key.pem"
group_replication_ssl_mode= REQUIRED
列出的唯一的特定于插件的配置选项是group_replication_ssl_mode。通过使用提供给服务器的ssl_*
参数配置 SSL 框架,此选项可激活组成员之间的 SSL 通信。