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)字段与服务器的主机名相匹配。

流程

  1. 创建 /etc/my.cnf.d/mysql-server-tls.cnf 文件:

    1. 添加以下内容来配置到私钥、服务器和 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
    2. 如果您有一个证书撤销列表(CRL),请将 MySQL 服务器配置为使用它:

      ssl_crl = /etc/pki/tls/certs/example.crl.pem
    3. 可选:拒绝未加密的连接尝试。要启用此功能,请附加:

      require_secure_transport = on
    4. 可选:设置服务器应支持的 TLS 版本。例如,要只支持 TLS 1.3,请附加:

      tls_version = TLSv1.3

      默认情况下,服务器支持 TLS 1.2 和 TLS 1.3。

  2. 重启 mysqld 服务:

    # systemctl restart mysqld.service

验证

要简化故障排除,请在将本地客户端配置为使用 TLS 加密之前在 MySQL 服务器上执行以下步骤:

  1. 验证 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 |
    +---------------+------------------------+
  2. 如果您将 MySQL 服务器配置为只支持特定的 TLS 版本,请显示 tls_version 变量:

    # mysql -u root -p -e "SHOW GLOBAL VARIABLES LIKE 'tls_version';"
    +---------------+---------+
    | Variable_name | Value   |
    +---------------+---------+
    | tls_version   | TLSv1.3 |
    +---------------+---------+
  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 |
    +-----------------+-------------------------------------------------+
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部