標籤: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帶來的問題。(實際情況要具體分析,否則會帶來很多問題)
本文出自 “永不放棄!任志遠” 部落格,謝絕轉載!
Tomcat JDBC 認證 MySQL SSL加密