如何在 MySQL Server 中配置 SSL 证书 ?

40 阅读2分钟

Secure MySQL Server with SSL Certificates

如果未经授权访问您的数据,使用 SSL/TLS 保护 MySQL 服务器是至关重要的一步。SSL (Secure Sockets Layer 安全套接字层) 和 TLS (Transport Layer Security 传输层安全) 是加密协议,确保 MySQL 服务器和户端之间的数据传输是加密的。这意味着即使有人拦截了数据,他们也无法阅读它。

SSL/TLS 要求

要使用 SSL/TLS 保护 MySQL 服务器,您需要:

  • MySQL 服务器端和客户端软件
  • SSL 证书(CA 证书、服务器证书和服务器密钥)

生成 SSL 证书

您需要创建 SSL 证书以启用加密,您可以使用免费工具 OpenSSL 生成这些证书。

Install OpenSSL

sudo apt-get install openssl

Create a CA Certificate

openssl genpkey -algorithm RSA -out ca-key.pem
openssl req -new -x509 -key ca-key.pem -out ca-cert.pem

Create a Server Certificate

openssl genpkey -algorithm RSA -out server-key.pem
openssl req -new -key server-key.pem -out server-req.pem
openssl x509 -req -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -out server-cert.pem

Create a Client Certificate

openssl genpkey -algorithm RSA -out client-key.pem
openssl req -new -key client-key.pem -out client-req.pem
openssl x509 -req -in client-req.pem -CA ca-cert.pem -CAkey ca-key.pem -out client-cert.pem

配置 MySQL 服务器

在生成证书之后,您需要配置 MySQL 服务器来使用它们。

Copy Certificates to MySQL Directory

将 ca-cert. pem、 server-cert. pem 和 server-key. pem 放在 MySQL 目录中 (例如:/etc/MySQL)

Edit MySQL Configuration File

打开 MySQL 配置文件(my.cnf 或 my.ini),在添加 [mysqld] 配置块中添加以下行:

[mysqld]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

Restart MySQL Server

sudo systemctl restart mysql

配置 MySQL 客户端

MySQL 客户端在连接服务器时需要配置为使用 SSL/TLS

Copy Client Certificates

确保客户端机器可以访问 ca-cert.pem, client-cert.pem 和 client-key.pem 文件

Connect Using SSL

Use the following command to connect with SSL:

使用 SSL 连接服务器

mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -u username -p

验证 SSL/TLS 连接

要验证连接是否使用 SSL/TLS,可以在连接到 MySQL 后运行以下命令:

SHOW VARIABLES LIKE '%ssl%';

查找 ssl_cipher 变量,如果它显示一个值,则表示您的连接已加密。

我的开源项目

酷瓜云课堂-在线教育解决方案