3.5. 在 MySQL 客户端中使用 CA 证书验证全局启用 TLS 加密
如果您的 MySQL 服务器支持 TLS 加密,请将您的客户端配置为仅建立安全连接,并验证服务器证书。这个流程描述了如何为服务器上的所有用户启用 TLS 支持。
3.5.1. 将 MySQL 客户端配置为默认使用 TLS 加密 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在 RHEL 上,您可以全局配置 MySQL 客户端使用 TLS 加密,并验证服务器证书中的通用名称(CN)是否与用户连接的主机名匹配。这可防止中间人攻击。
先决条件
- MySQL 服务器启用了 TLS 支持。
-
CA 证书存储在客户端的
/etc/pki/tls/certs/ca.crt.pem文件中。
流程
使用以下内容创建
/etc/my.cnf.d/mysql-client-tls.cnf文件:[client] ssl-mode=VERIFY_IDENTITY ssl-ca=/etc/pki/tls/certs/ca.crt.pem
[client] ssl-mode=VERIFY_IDENTITY ssl-ca=/etc/pki/tls/certs/ca.crt.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这些设置定义 MySQL 客户端使用 TLS 加密,并且客户端将主机名与服务器证书中的 CN 进行比较(
ssl-mode=VERIFY_IDENTITY)。另外,它还指定到 CA 证书的路径(ssl-ca)。
验证
使用主机名连接到服务器,并显示服务器的状态:
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_SHA384Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果
SSL条目包含Cipher in use is…,代表连接已加密。请注意,您在这个命令中使用的用户具有远程身份验证的权限。
如果您连接的主机名与服务器的 TLS 证书中的主机名不匹配,则
ssl-mode=VERIFY_IDENTITY参数导致连接失败。例如,如果您连接到localhost:mysql -u root -p -h localhost -e status
# mysql -u root -p -h localhost -e status ERROR 2026 (HY000): SSL connection error: error:0A000086:SSL routines::certificate verify failedCopy to Clipboard Copied! Toggle word wrap Toggle overflow