1. 检查当前SSL / TLS状态
我们将使用-h指定IPv4本地环回接口,以强制客户端与TCP连接,而不是使用本地套接字文件。 这将允许我们检查TCP连接的SSL状态:
mysql -u root -p -h 127.0.0.1
键入以下内容以显示SSL / TLS变量的状态:
SHOW VARIABLES LIKE '%ssl%';
Output
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | |
+---------------+----------+
9 rows in set (0.01 sec)
have_openssl和have_ssl字段显示DISABLE,表示当前mysql拥有ssl的功能,但是ssl功能未默认启动。
检查我们当前连接的状态以确认:(需要root授权ssl等陆才可以(下面有介绍))
\s
Output
--------------
mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper
Connection id: 30
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.17-0ubuntu0.16.04.1 (Ubuntu)
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 3 hours 38 min 44 sec
Threads: 1 Questions: 70 Slow queries: 0 Opens: 121 Flush tables: 1 Open tables: 40 Queries per second avg: 0.005
--------------
上面显示的SSL: Not in use
说明,当前连接没有在SSL安全连接中
关闭当前MySQL会话:
exit
2.生成SSL / TLS证书和密钥
要启用到MySQL的SSL连接,我们首先需要生成相应的证书和密钥文件。 MySQL 5.7及更高版本提供了一个名为mysql_ssl_rsa_setup
的实用程序,我们使用root权限生成相关的请求文件和证书对,为了能让mysql
有权限去使用,命令中应该使用选项和参数--uid=mysql
来指定uid。
sudo mysql_ssl_rsa_setup --uid=mysql
命令执行生成证书的过程如下:
root@simon-pc:/home/simon# mysql_ssl_rsa_setup --uid=mysql
Generating a 2048 bit RSA private key
...........+++
.................................................................................+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
.+++
....................................................................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
...................................................+++
...............+++
writing new private key to 'client-key.pem'
-----
root@simon-pc:/home/simon#
检查生成的文件:
root@simon-pc:/home/simon# sudo find /var/lib/mysql -name '*.pem' -ls
655857 4 -rw------- 1 mysql mysql 1679 Feb 1 09:36 /var/lib/mysql/ca-key.pem
657410 4 -rw------- 1 mysql mysql 1679 Feb 1 09:36 /var/lib/mysql/server-key.pem
657421 4 -rw-r--r-- 1 mysql mysql 1107 Feb 1 09:36 /var/lib/mysql/server-cer