3.4.2. 在 MySQL 服务器上配置 TLS 加密
默认情况下,MySQL 使用未加密的连接。对于更多安全连接,您可以在 MySQL 服务器上启用传输层安全(TLS)支持,并将客户端配置为建立加密连接。
先决条件
- 已安装 MySQL 服务器。
-
mysqld服务正在运行。 服务器上存在 Privacy Enhanced Mail(PEM)格式的以下文件,并可由
mysql用户读取:-
服务器的私钥:
/etc/pki/tls/private/server.example.com.key.pem -
服务器证书:
/etc/pki/tls/certs/server.example.com.crt.pem -
证书颁发机构(CA)证书
/etc/pki/tls/certs/ca.crt.pem
-
服务器的私钥:
- 主题可识别名称(DN)或服务器证书中的主题备用名称(SAN)字段与服务器的主机名相匹配。
流程
创建
/etc/my.cnf.d/mysql-server-tls.cnf文件:添加以下内容来配置到私钥、服务器和 CA 证书的路径:
[mysqld] ssl_key = /etc/pki/tls/private/server.example.com.key.pem ssl_cert = /etc/pki/tls/certs/server.example.com.crt.pem ssl_ca = /etc/pki/tls/certs/ca.crt.pem如果您有一个证书撤销列表(CRL),请将 MySQL 服务器配置为使用它:
ssl_crl = /etc/pki/tls/certs/example.crl.pem可选:拒绝未加密的连接尝试。要启用此功能,请附加:
require_secure_transport = on可选:设置服务器应支持的 TLS 版本。例如,要只支持 TLS 1.3,请附加:
tls_version = TLSv1.3默认情况下,服务器支持 TLS 1.2 和 TLS 1.3。
重启
mysqld服务:# systemctl restart mysqld.service
验证
要简化故障排除,请在将本地客户端配置为使用 TLS 加密之前在 MySQL 服务器上执行以下步骤:
验证 MySQL 现在是否启用了 TLS 加密:
# mysql -u root -p -h <MySQL_server_hostname> -e "SHOW session status LIKE 'Ssl_cipher';" +---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ | Ssl_cipher | TLS_AES_256_GCM_SHA384 | +---------------+------------------------+如果您将 MySQL 服务器配置为只支持特定的 TLS 版本,请显示
tls_version变量:# mysql -u root -p -e "SHOW GLOBAL VARIABLES LIKE 'tls_version';" +---------------+---------+ | Variable_name | Value | +---------------+---------+ | tls_version | TLSv1.3 | +---------------+---------+验证服务器是否使用正确的 CA 证书、服务器证书和私钥文件:
# mysql -u root -e "SHOW GLOBAL VARIABLES WHERE Variable_name REGEXP '^ssl_ca|^ssl_cert|^ssl_key';" +-----------------+-------------------------------------------------+ | Variable_name | Value | +-----------------+-------------------------------------------------+ | ssl_ca | /etc/pki/tls/certs/ca.crt.pem | | ssl_capath | | | ssl_cert | /etc/pki/tls/certs/server.example.com.crt.pem | | ssl_key | /etc/pki/tls/private/server.example.com.key.pem | +-----------------+-------------------------------------------------+