Tomcat JDBC 認證 MySQL SSL加密

最近公司做三級認證,也沒怎麼更新java博客,近期忙完則更新。其中三級認證有一項感覺很有意思:

一般公司MySQL/Mariadb Tomcat做JDBC認證一般是這樣的:

db.default.driver=com.mysql.jdbc.Driverdb.default.url="jdbc:mysql://url.to.database/database"
db.default.user= "..."     //MySQL用戶名
db.default.password="..."  // MySQL密碼
......                     //其它參數優化

也就是說,除了用戶名,密碼,IP,端口,基本調優,就可以。

但是如果數據庫用的是ssl加密連接,那麼連接方式務必是需要證書的。於是乎引起了我的興趣,經過查詢,大致流程是這樣的,分享一下:

1、MySQL簽發證書配置

[mysqld]
ssl    #開啓ssl功能
ssl-ca= /etc/mysql/ssl/cacert.pem   #指定CA文件位置
ssl-cert= /etc/mysql/ssl/master.crt #指定證書文件位置
ssl-key= /etc/mysql/ssl/master.key  #指定密鑰所在位置

2、keytool 導入證書

keytool -import -alias mysqlServerCACert -file cacert.pem.pem -keystore mysqlServerCACertSSL.jks

3、JDBC相關參數:

 eg:

db.default.url="jdbc:mysql://url.to.database/test_db?verifyServerCertificate=true&useSSL=true&requireSSL=true"

verifyServerCertificate=true  --拒絕不能確認證書如果主機連接(使用ssl證書)

useSSL=true                   --使用SSL連接。

requireSSL=true               --拒絕如果MySQL服務器不支持SSL連接。


4、指明自己的mysqlServerCACertSSL.jsk

export JAVA_OPTS="-Djavax.net.ssl.keyStore=/usr/local/etc/tomcat/certs/mysqlServerCACertSSL.jsk -Djavax.net.ssl.keyStorePassword=password -Djavax.net.ssl.trustStore=/usr/local/etc/tomcat/certs/mysqlServerCACertSSL.jsk -Djavax.net.ssl.trustStorePassword=password"

the same:

-Djavax.net.ssl.keyStore=path_to_keystore_file
-Djavax.net.ssl.keyStorePassword=password
-Djavax.net.ssl.trustStore=path_to_truststore_file
-Djavax.net.ssl.trustStorePassword=password

5、重啓tomcat

/etc/init.d/tomat restart

6、注意事項:

6.1)MySQL支持ssl,並確保登陸驗證。

6.2)賬號授權。

6.3)證書權限管理。

6.4)考慮ssl帶來的問題。(實際情況要具體分析,否則會帶來很多問題)

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