为MySQL客户端启用TLS

TLS也称为SSL(安全套接字层)。它指的是传输层安全性。

当MySQL客户端和服务器之间存在未加密的连接时,有权访问网络的人员可以查看所有流量,并检查在客户端和服务器之间发送或接收的数据。当用户希望以安全的方式在网络上移动信息时,不加密的连接是不可接受的。

为了使任何类型的数据都不可读,必须使用加密。加密算法通常包括有助于抵御多种已知攻击的安全元素,其中一些攻击包括更改加密消息的顺序或将数据重播两次。MySQL支持客户端和服务器之间使用TLS协议的加密连接。但是MySQL并不使用SSL协议进行加密连接,因为加密很弱。

TLS使用加密算法来确保通过公共网络接收的数据是可信数据。它具有多种方法来检测数据更改,丢失,或者replay.TLS还可以使用X.509标准在身份验证中附带的算法。

启用TLS的步骤

MySQL在每个连接的基础上执行加密。给定用户的加密可以是可选的或强制的。这使用户可以根据应用程序的需求选择加密或未加密的连接。

让我们了解如何为MySQL客户端启用TLS:

  • 启动服务器时,必须在配置文件中指定ssl-cert和ssl-key参数。

  • 证书或密钥是在OpenSSL的帮助下签名和生成的。

  • 也可以使用MySQL中的mysql_ssl_rsa_setup工具生成此密钥:

    mysql_ssl_rsa_setup --datadir=./certs
  • 如果参数正确,则安全连接将作为启动时启用的输出传递。

  • 证书,密钥和CA已重新加载-在服务器实例上执行ALTER INSTANCE RELOAD TLS语句。这样可以确保不必重新加载服务器实例。

  • 建立连接成功后,新加载的证书,密钥和CA会生效。 

  • MySQL客户端配置为使用加密连接-默认情况下,尝试建立加密连接。如果服务器不支持加密连接,则会自动返回未加密的连接。

  • 客户端的连接行为可以使用--ssl-mode参数进行更改:

    --ssl-mode=REQUIRED- Tells that en encrypted connection is needed.

需要启用身份验证:如果未指定ssl-ca参数,则默认情况下客户端或服务器不进行身份验证。

  • 必须在服务器中指定ssl-cert和ssl-key参数。

  • --ssl-ca参数在MySQL客户端中指定。

  • 在MySQL客户端中将--ssl-mode指定为VERIFY_CA。

  • 服务器中配置的证书(ssl-cert)由客户端--ssl-ca参数指定的CA签名。

  • 如果不是,则身份验证失败。

要从服务器验证MySQL客户端,请执行以下操作:

  • ssl-cert,ssl-key和ssl-ca参数是指定的服务器。

  • --ssl-cert和--ssl-key参数在客户端中指定。

  • 服务器配置的证书和客户端配置的证书由服务器指定的ssl-ca签名。

  • 服务器到客户端的身份验证是可选的。如果客户端在TLS握手期间未显示其身份证明书,则TLS连接仍将建立。

  • 检查当前连接是否使用任何加密。