MySQL开启SSL加密

时间:2021-08-30
本文章向大家介绍MySQL开启SSL加密,主要包括MySQL开启SSL加密使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

转自:

https://www.docs4dev.com/docs/zh/mysql/5.7/reference/creating-ssl-files-using-openssl.html#creating-ssl-files-using-openssl-unix-command-line

https://www.docs4dev.com/docs/zh/mysql/5.7/reference/using-encrypted-connections.html

示例 1:在 Unix 上从命令行创建 SSL 文件

以下示例显示了一组用于创建 MySQL 服务器和 Client 端证书以及密钥文件的命令。您将需要通过 openssl 命令来响应多个提示。要生成测试文件,可以按 Enter 键进入所有提示。要生成供生产使用的文件,应提供非空响应。

# Create clean environment
rm -rf newcerts
mkdir newcerts && cd newcerts

# Create CA certificate
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 3600 \
        -key ca-key.pem -out ca.pem

# Create server certificate, remove passphrase, and sign it
# server-cert.pem = public key, server-key.pem = private key
openssl req -newkey rsa:2048 -days 3600 \
        -nodes -keyout server-key.pem -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -req -in server-req.pem -days 3600 \
        -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

# Create client certificate, remove passphrase, and sign it
# client-cert.pem = public key, client-key.pem = private key
openssl req -newkey rsa:2048 -days 3600 \
        -nodes -keyout client-key.pem -out client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -req -in client-req.pem -days 3600 \
        -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

生成证书后,请验证它们:

openssl verify -CAfile ca.pem server-cert.pem client-cert.pem

您应该看到这样的响应:

server-cert.pem: OK
client-cert.pem: OK

要查看证书的内容(例如,检查证书有效的日期范围),请像下面这样调用 openssl :

openssl x509 -text -in ca.pem
openssl x509 -text -in server-cert.pem
openssl x509 -text -in client-cert.pem

现在,您可以使用一组文件,如下所示:

  • ca.pem:使用它来设置服务器端的ssl_ca系统变量和 Client 端端的--ssl-ca选项。 (如果使用了 CA 证书,则双方必须相同.)

  • server-cert.pemserver-key.pem:使用它们来设置服务器端的ssl_certssl_key系统变量。

  • client-cert.pemclient-key.pem:将它们用作 Client 端上--ssl-cert--ssl-key选项的参数。

加密连接的服务器端启动配置

在服务器端,--ssl选项指定服务器允许但不需要加密连接。默认情况下启用此选项,因此无需显式指定。

要要求 Client 端使用加密连接进行连接,请启用require_secure_transport系统变量。参见将加密连接配置为强制性

服务器端的这些系统变量指定允许 Client 端构建加密连接时服务器使用的证书和密钥文件:

  • ssl_ca:证书颁发机构(CA)证书文件的路径名。 (ssl_capath类似,但指定了 CA 证书文件目录的路径名。)

  • ssl_cert:服务器公用密钥证书文件的路径名。可以将此证书发送到 Client 端,并根据其拥有的 CA 证书进行身份验证。

  • ssl_key:服务器私钥文件的路径名。

例如,要为服务器启用加密连接,请在my.cnf文件中以以下几行启动它,并根据需要更改文件名:

[mysqld]
ssl_ca=ca.pem
ssl_cert=server-cert.pem
ssl_key=server-key.pem
 
 
 

原文地址:https://www.cnblogs.com/nanxiang/p/15207291.html