MYSQL SSL配置與使用

mysql5.6只支持TLS1.0
mysql5.7支持TLS1.1

1.登錄後使用此命令查看是否開啓ssl
SHOW VARIABLES LIKE ‘%ssl%’;

2.若未開啓,製作證書,修改/etc/my.cnf文件,在mysqld標籤下添加:
ssl-ca=/root/ca/ca.pem
ssl-cert=/root/ca/server.pem
ssl-key=/root/ca/key.pem

3.重啓mysql服務器,再次使用1命令查看,應該顯示已經開啓ssl

4.查看當前mysql服務器支持的ssl版本,必須使用SSL登錄的模式後才能使用此命令查看,否則爲空
“\s”:命令可以查看當前連接是否是ssl連接
SHOW GLOBAL STATUS LIKE ‘Ssl_version’;
SHOW GLOBAL STATUS LIKE ‘Ssl_version’\G
SHOW GLOBAL STATUS LIKE ‘Ssl_cipher_list’\G

5.添加一個測試賬號
grant all on . to ‘ssl_test’@’%’ identified by ‘test@1234’ require SSL;

6.配置賬號登錄模式
單向認證(必須使用SSL登錄,不驗證證書):
update user set ssl_type=‘ANY’ where user=‘ssl_test’;
flush privileges;
雙向認證(必須使用SSL登錄,並且驗證證書):
update user set ssl_type=‘X509’ where user=‘ssl_test’;
flush privileges;

7.測試登錄(這裏-h參數必須設置,mysql5.6可以不設置,mysql5.7必須設置)
mysql -h192.168.60.129 -ussl_test --ssl-cert=client-cert.pem --ssl-key=client-key.pem

=============================================================================================
使用JDBC連接數據庫方式
使用JDBC連接,需要用到keystore文件
有三種使用方式,優先級順次:

1.使用-D參數使用
-Djavax.net.ssl.keyStore=path_to_keystore_file
-Djavax.net.ssl.keyStorePassword=mypassword
-Djavax.net.ssl.trustStore=path_to_truststore_file
-Djavax.net.ssl.trustStorePassword=mypassword

2.使用System.setPreproties使用
System.setProperty(“javax.net.ssl.keyStore”,“path_to_keystore_file”);
System.setProperty(“javax.net.ssl.keyStorePassword”,“mypassword”);
System.setProperty(“javax.net.ssl.trustStore”,“path_to_truststore_file”);
System.setProperty(“javax.net.ssl.trustStorePassword”,“mypassword”);

3.使用jdbc連接Url使用
clientCertificateKeyStoreUrl=file:<path_to_truststore_file>
clientCertificateKeyStorePassword=mypassword
clientCertificateKeyStoreUrl=file:<path_to_truststore_file>
clientCertificateKeyStorePassword=mypassword
例如:xxxxclientCertificateKeyStoreUrl=file:<path_to_truststore_file>&clientCertificateKeyStorePassword=mypassword&xxxx

坑:
我採用第三種方式使用,在一般的項目中沒有問題,在windows下SSM項目也沒問題,在Linux下SSM項目報一個密鑰未初始化的錯誤,改成第二種使用方式得到解決

附:
mysql官方使用頁:
https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-using-ssl.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章