2.5. 在 MariaDB 客户端中全局启用 TLS 加密
如果您的 MariaDB 服务器支持 TLS 加密,请将客户端配置为仅建立安全连接,并验证服务器证书。这个流程描述了如何为服务器上的所有用户启用 TLS 支持。
2.5.1. 将 MariaDB 客户端配置为默认使用 TLS 加密 复制链接链接已复制到粘贴板!
在 RHEL 上,您可以全局配置 MariaDB 客户端使用 TLS 加密,并验证服务器证书中的通用名称(CN)与用户连接的主机名匹配。这可防止中间人攻击。
先决条件
- MariaDB 服务器启用了 TLS 支持。
- 如果 RHEL 不信任发布服务器证书的证书颁发机构(CA),则 CA 证书已被复制到客户端。
- 如果 MariaDB 服务器运行 RHEL 9.2 或更高版本,并且启用了 FIPS 模式,则这个客户端支持 Extended Master Secret(EMS)扩展或使用 TLS 1.3。没有 EMS 的 TLS 1.2 连接会失败。如需更多信息,请参阅红帽知识库解决方案 在 RHEL 9.2 及更高版本上强制执行 TLS 扩展 "Extended Master Secret"。
流程
如果 RHEL 不信任发布服务器证书的 CA:
将 CA 证书复制到
/etc/pki/ca-trust/source/anchors/
目录中:cp <path>/ca.crt.pem /etc/pki/ca-trust/source/anchors/
# cp <path>/ca.crt.pem /etc/pki/ca-trust/source/anchors/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置允许所有用户读取 CA 证书文件的权限:
chmod 644 /etc/pki/ca-trust/source/anchors/ca.crt.pem
# chmod 644 /etc/pki/ca-trust/source/anchors/ca.crt.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重建 CA 信任数据库:
update-ca-trust
# update-ca-trust
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用以下内容创建
/etc/my.cnf.d/mariadb-client-tls.cnf
文件:[client-mariadb] ssl ssl-verify-server-cert
[client-mariadb] ssl ssl-verify-server-cert
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这些设置定义 MariaDB 客户端使用 TLS 加密(
ssl
),并且客户端将主机名与服务器证书中的 CN(ssl-verify-server-cert
)进行比较。
验证
使用主机名连接到服务器,并显示服务器的状态:
mysql -u root -p -h server.example.com -e status
# mysql -u root -p -h server.example.com -e status ... SSL: Cipher in use is TLS_AES_256_GCM_SHA384
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
SSL
条目包含Cipher in use is…
,代表连接已加密。请注意,您在这个命令中使用的用户具有远程身份验证的权限。
如果您连接的主机名与服务器的 TLS 证书中的主机名不匹配,则
ssl-verify-server-cert
参数会导致连接失败。例如,如果您连接到localhost
:mysql -u root -p -h localhost -e status
# mysql -u root -p -h localhost -e status ERROR 2026 (HY000): SSL connection error: Validation of SSL server certificate failed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow