为MySQL客户端启用TLS
TLS 也被称为 SSL (安全套接字层)。它指的是传输层安全协议。
当MySQL客户端和服务器之间存在未加密连接时,拥有网络访问权限的人员可以监视所有流量并检查客户端和服务器之间发送或接收的数据。当用户希望通过网络以安全的方式移动信息时,未加密的连接是不可接受的。
为了使任何类型的数据不可读,必须使用加密。加密算法通常包括有助于抵抗许多已知攻击的安全元素,其中一些包括更改加密消息的顺序或两次重放数据。MySQL支持客户端和服务器之间发生的加密连接,它们都使用TLS协议。但MySQL不使用SSL协议进行加密连接,因为其加密强度较弱。
TLS使用加密算法来确保通过公共网络接收的数据是可信赖的数据。它有多种方法可以检测数据更改、丢失或重放。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参数。
- 在MySQL客户端中指定--ssl-ca参数。
- 在MySQL客户端中将--ssl-mode指定为VERIFY_CA。
- 服务器中配置的证书由客户端--ssl-ca参数指定的CA签名。
- 如果不是,则身份验证失败。
从服务器验证MySQL客户端
- 在服务器中指定ssl-cert、ssl-key和ssl-ca参数。
- 在客户端中指定--ssl-cert和--ssl-key参数。
- 服务器配置的证书和客户端配置的证书由服务器指定的ssl-ca签名。
- 服务器到客户端的身份验证是可选的。如果客户端在TLS握手期间不显示其身份验证证书,则仍然建立TLS连接。
- 检查当前连接是否使用任何加密。
广告