我已經設法正確配置我的java應用程序以安全地連接到我的mysql,但我不知道:這是配置所需證書的正確方法嗎?確保JDBC連接時證書和KeyStore配置
我創建了一個自定義的信任和自定義密鑰庫:
1導入服務器CA證書到我的自定義信任庫文件
keytool -import -alias mysqlServerCACert -file server-ca.pem -keystore truststore
2捆綁的客戶端證書和客戶端密鑰一起進入PKCS12文件,並將其導入到我的自定義密鑰庫文件
openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -out client.p12 -name clientalias -CAfile server-ca.pem
keytool -importkeystore -destkeystore keystore -srckeystore client.p12 -srcstoretype PKCS12 -alias clientalias
我已經配置了我的JDBCURL使用安全連接:
mysql://[my_host]:3306/[my_db]?useUnicode=yes&characterEncoding=UTF-8&useSSL=true&requireSSL=true&verifyServerCertificate=true
我已經把我用下面的JVM環境選項應用:
JAVA_OPTS="
-Djavax.net.ssl.keyStore=/path_to_my_custom_keystore
-Djavax.net.ssl.keyStorePassword=mykeyStorePassword
-Djavax.net.ssl.trustStore=/path_to_my_custom_truststore
-Djavax.net.ssl.trustStorePassword=mytrustStorePasswordPassword"
但這樣一來,其實我已經改變了默認密鑰庫/信任,它通常位於:$JAVA_HOME/jre/lib/security/cacerts
並且通過這樣做,一些客戶端庫在信任庫中查找其ssl證書時開始發生錯誤
於是, 我已經導出了整個默認CA-證書到我的自定義信任文件(顯然沒有必要將其導入到我的密鑰庫,只是爲了我的信任):
keytool -importkeystore -srckeystore /etc/ssl/certs/java/cacerts -destkeystore /path_to_my_custom_truststore
現在,一切似乎要按預期工作,我主要關心的是我現在從原始默認JVM證書商店(密鑰庫/信任庫)/etc/ssl/certs/java/cacerts
分離出來,因此容易受到此文件的將來更改。
更準確地說,當JVM得到更新並添加新的證書別名時會發生什麼?
我已經根據您的答案編輯我的問題,方式是我現在只將ca證書導入到我的信任庫。 非常感謝 – raul7