MySQL5.7 開啟SSL


MySQL5.7配置SSL加密的方式比較簡單。

生成證書文件

[root@ ~]# bin/mysql_ssl_rsa_setup --datadir=/data/database/mysql

[root@ ~]# chown mysql:mysql /data/database/mysql -R 

[root@ ~]# ll /data/database/mysql -rt                
.....
-rw------- 1 mysql mysql 1675 Mar 28 16:35 ca-key.pem             # CA 私鑰
-rw-r--r-- 1 mysql mysql 1082 Mar 28 16:35 ca.pem                    # 自簽的CA證書,客戶端連接也需要提供
-rw-r--r-- 1 mysql mysql 1086 Mar 28 16:35 client-cert.pem        # 客戶端連接服務端需要提供的證書文件
-rw------- 1 mysql mysql 1675 Mar 28 16:35 client-key.pem         #客戶端連接服務端需要提供的私鑰文件
-rw------- 1 mysql mysql 1679 Mar 28 16:35 private_key.pem      #私鑰公鑰的私有成員
-rw-r--r-- 1 mysql mysql  451 Mar 28 16:35 public_key.pem        #私鑰公鑰的共有成員
-rw-r--r-- 1 mysql mysql 1086 Mar 28 16:35 server-cert.pem       #服務端證書文件
-rw------- 1 mysql mysql 1679 Mar 28 16:35 server-key.pem       #服務端私鑰文件

配置:

[root@ ~]# vim /etc/my.cnf
#ssl
ssl-ca=/data/database/mysql/ca.pem
ssl-cert=/data/database/mysql/server-cert.pem
ssl-key=/data/database/mysql/server-key.pem

然后重啟一下

查看一下:

(root@localhost) [(none)]> show global variables like '%ssl%';
+---------------+--------------------------------------+
| Variable_name | Value                                |
+---------------+--------------------------------------+
| have_openssl  | YES                                  |
| have_ssl      | YES                                  |
| ssl_ca        | /data/database/mysql/ca.pem          |
| ssl_capath    |                                      |
| ssl_cert      | /data/database/mysql/server-cert.pem |
| ssl_cipher    |                                      |
| ssl_crl       |                                      |
| ssl_crlpath   |                                      |
| ssl_key       | /data/database/mysql/server-key.pem  |
+---------------+--------------------------------------+
9 rows in set (0.01 sec)

(root@localhost) [(none)]> status
--------------
/usr/local/mysql57/bin/mysql  Ver 14.14 Distrib 5.7.19-17, for Linux (x86_64) using  6.0

Connection id:          3
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.7.19-17-log Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /tmp/mysql.sock
Uptime:                 34 sec

Threads: 1  Questions: 7  Slow queries: 0  Opens: 109  Flush tables: 1  Open tables: 102  Queries per second avg: 0.205

創建一個SSL登陸的賬號

(root@localhost) [(none)]>  create user admin@127.0.0.1 identified by '123456' require ssl ;   #require ssl表示強制使用SSL
(root@localhost) [(none)]>  grant all on *.* to admin@127.0.0.1 ;
(root@localhost) [(none)]> flush privileges;

登錄

使用unix socket無法加密呀
通過--ssl-cert=/xxx/client-cert.pem --ssl-key=/xxx/client-key.pem 指定客戶端證書和key

 mysql -uadmin -p123456 -P3306 -h 127.0.0.1 --ssl-cert=/data/database/mysql/client-cert.pem  --ssl-key=/data/database/mysql/client-key.pem 

查看一下狀態:

admin@127.0.0.1) [(none)]> status
--------------
/usr/local/mysql57/bin/mysql  Ver 14.14 Distrib 5.7.19-17, for Linux (x86_64) using  6.0

Connection id:          29
Current database:
Current user:           admin@127.0.0.1
SSL:                    Cipher in use is DHE-RSA-AES256-SHA
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.7.19-17-log Source distribution
Protocol version:       10
Connection:             127.0.0.1 via TCP/IP
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:               3306
Uptime:                 30 min 2 sec

Threads: 1  Questions: 108  Slow queries: 0  Opens: 139  Flush tables: 1  Open tables: 132  Queries per second avg: 0.059
--------------

查看加密方式

(admin@127.0.0.1) [(none)]>  show status like 'ssl_cipher';  
+---------------+--------------------+
| Variable_name | Value              |
+---------------+--------------------+
| Ssl_cipher    | DHE-RSA-AES256-SHA |
+---------------+--------------------+
1 row in set (0.00 sec)

查看SSL版本:

(admin@127.0.0.1) [(none)]> show session status like 'ssl_version';
+---------------+---------+
| Variable_name | Value   |
+---------------+---------+
| Ssl_version   | TLSv1.1 |
+---------------+---------+
1 row in set (0.00 sec)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM