MySQL5.7之SSL/TLS加密连接配置

运维必知的安全内容之TLS协议,如何选择合适的连接MySQL的TLS版本,本文将给出参考。

目录

1、连接MySQL服务器:使用加密选项

2、查看MySQL支持的TLS协议版本

3、变量tls_version使用说明

4、启用SSL协议连接

5、总结


环境:

  • CentOS-7.9.2009-x86_64

1、连接MySQL服务器:使用加密选项

这些选项控制客户端程序如何建立与MySQL服务器的连接以及连接是否加密。

名称描述引入版本
--get-server-public-key

Request RSA public key from server

译:从服务器请求 RSA 公钥

5.7.23
--server-public-key-path

Path name to file containing RSA public key

译:包含 RSA 公钥的文件的路径名

--skip-ssl

Disable connection encryption

译:禁用连接加密

--ssl

Enable connection encryption

译:启用连接加密

--ssl-ca

File that contains list of trusted SSL Certificate Authorities

译:包含受信任 SSL 证书颁发机构列表的文件

--ssl-capath

Directory that contains trusted SSL Certificate Authority certificate files

译:包含受信任的 SSL 证书颁发机构证书文件的目录

--ssl-certFile that contains X.509 certificate

译:包含 X.509 证书的文件

--ssl-cipher

Permissible ciphers for connection encryption

译:连接加密的允许密码

--ssl-crl

File that contains certificate revocation lists

译:包含证书吊销列表的文件

--ssl-crlpath

Directory that contains certificate revocation-list files

译:包含证书吊销列表文件的目录

--ssl-key

File that contains X.509 key

译:包含 X.509 密钥的文件

--ssl-mode

Desired security state of connection to server

译:连接到服务器的所需安全状态

5.7.11
--ssl-verify-server-cert

Verify host name against server certificate Common Name identity

译:根据服务器证书公用名身份验证主机名

--tls-version

Permissible TLS protocols for encrypted connections

译:加密连接的允许 TLS 协议

5.7.10

MySQL 5.7 Reference Manual :: 4.2.3 连接服务器命令行选项https://dev.mysql.com/doc/refman/5.7/en/connection-options.html#option_general_tls-version

从 MySQL 5.7.11 开始不推荐 客户端使用 --ssl 选项,并且 --ssl 在 MySQL 8.0 中删除。对于 客户端程序 请改用 --ssl-mode:  

不推荐服务器端使用 --ssl 选项。

2、查看MySQL支持的TLS协议版本

  • 在 MySQL 5.7.28 之前,可以使用 yaSSL 作为 OpenSSL 的替代方案来编译 MySQL。
  • 从 MySQL 5.7.28 开始,删除了对 yaSSL 的支持,所有 MySQL 构建都使用 OpenSSL。
mysql> SHOW GLOBAL VARIABLES LIKE 'tls_version';
+---------------+-----------------------+
| Variable_name | Value                 |
+---------------+-----------------------+
| tls_version   | TLSv1,TLSv1.1,TLSv1.2 |
+---------------+-----------------------+

在《/etc/my.cnf》文件中的 mysqld区域,添加 tls_version参数及赋值。

[mysqld]
# 从 MySQL 5.7.35 开始,不推荐使用 TLSv1 和 TLSv1.1 连接协议
tls_version=TLSv1.1,TLSv1.2

建议使用更安全的 TLSv1.2 和 TLSv1.3 协议进行连接,TLSv1.3 要求 MySQL 服务器和客户端应用程序都使用 OpenSSL 1.1.1 或更高版本进行编译。

注意:从 MySQL 5.7.35 开始,不推荐使用 TLSv1 和 TLSv1.1 连接协议,并且对它们的支持可能会在未来的 MySQL 版本中被删除(请参阅 IETF 备忘录 Deprecating TLSv1.0 and TLSv1.1)。

MySQL 5.7 Reference Manual :: 6.3.2 加密连接 TLS 协议和密码https://dev.mysql.com/doc/refman/5.7/en/encrypted-connection-protocols-ciphers.html

3、变量tls_version使用说明

系统变量tls_version指定服务器允许哪些协议用于加密连接。

是一个逗号分隔的列表,可以包含一个或多个协议版本。

命令行格式--tls-version=protocol_list
引入版本5.7.10
系统变量tls_version
范围Global
动态No
类型String
MySQL版本 ≥ 5.7.28 的默认值TLSv1,TLSv1.1,TLSv1.2
MySQL版本 ≤ 5.7.27 的默认值

TLSv1,TLSv1.1,TLSv1.2(OpenSSL)

TLSv1,TLSv1.1(yaSSL)

MySQL 5.7 Reference Manual :: 5.1.7 服务器系统变量https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_tls_version

注意:此变量名支持的协议,取决于用于编译 MySQL 的 SSL 库,赋值时应选择允许的协议。有关详细信息,请参阅 第 6.3.2 节,“加密连接 TLS 协议和密码”

4、启用SSL协议连接

请参考以下博文 1.3 章节

MySQL数据库的安全策略-CSDN博客mysql 安全策略https://blog.csdn.net/q908544703/article/details/126034119

5、总结

启用TLS加密连接,对访问MySQL数据库的速度有一定的影响,请结合实例部署场景,决定是否启用。建议对核心数据库配置启用TLS连接。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Netty是一款高性能的网络应用框架,支持SSL/TLS加密来保护网络通信的安全性。SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是网络通信中广泛使用的加密协议,用于在客户端和服务器之间建立安全的通信信道。 Netty提供了一些组件和类来实现SSL/TLS加密。首先,我们需要使用javax.net.ssl包中的类来创建SSLContext对象。SSLContext是SSL/TLS协议的入口点,它包含用于加密和解密数据的加密算法和密钥。我们需要为SSLContext对象配置密钥库和信任库,密钥库用于存储证书和私钥,而信任库用于存储可信的证书。 接下来,我们需要创建SslHandler对象,将其添加到Netty的ChannelPipeline中。SslHandler作为一个ChannelHandler,负责处理SSL/TLS握手过程和数据的加密解密。当建立连接时,SslHandler会自动执行握手过程,包括协商加密算法、验证证书以及生成会话密钥等。 一旦握手完成,SslHandler会将数据加密后发送到网络,并将接收到的密文解密成明文。这样可以确保在网络传输过程中的数据保密性和完整性。此外,SslHandler还提供了一些方法来获取会话信息,如远程主机的证书和协商的加密算法。 使用Netty的SSL/TLS加密功能能够有效地提高网络通信的安全性。通过配置SSLContext和添加SslHandler,我们可以方便地实现对网络通信的加密和解密。无论是在客户端还是服务器端,都可以使用Netty的SSL/TLS加密功能来保护数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂龙骄子

独码乐,不如众码乐,乐享其中

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值