12

現在、SSLを使用せずにデータベースに接続しています。SSLを利用したいと思います。私がそれを設定する方法は、私のデータベースソースがconfigにあるということです。

DB_SOURCE=jdbc:mysql://myDatabaseInfo:3306/DB_NAME?
DB_USER=dbUser
DB_PW=dbPw

次の引数を指定してプログラムを呼び出すことで、SSL接続を機能させることができます

-Djavax.net.ssl.trustStore=path\to\truststore
-Djavax.net.ssl.trustStorePassword=myPassword

コード自体の環境変数を変更することで動作させることもできます

dbSource += "?useSSL=true";
System.setProperty("javax.net.ssl.trustStore", "path\to\truststore");  
System.setProperty("javax.net.ssl.trustStorePassword", "myPassword");  
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(dbSource, dbUser, dbPw); 

ただし、私の目標は、コードを変更せずに、また使用するVM引数を変更せずにSSL接続を確立することです。この情報を含めるようにソースを設定する方法はありますか?

何かのようなもの:

jdbc:mysql://myDatabaseInfo:3306/DB_NAME?useSSL=true&trustCertificateKeyStoreUrl=path\to\truststore&trustCertificateKeyStorePassword=myPassword

私はこれを正確に試しましたが、機能しません。理想的には、すでに持っている構成に情報を追加するだけで、複数の場所で変更を加える必要がなくなります。何か案は?

4

2 に答える 2

3

提案 1: Java のトラスト ストアの代わりにトラスト ストアを配置するか、証明書を Java のトラスト ストアにインポートします。${java.home}/lib/security/cacerts

提案 2:を拡張する独自のドライバーを作成しますcom.mysql.jdbc.Driver。SSL 構成を新しいコードに入れます。コーディングする必要がありますが、メインアプリケーションでは必要ありません。それがあなたに受け入れられるかどうかはわかりません。

于 2012-12-20T20:55:04.737 に答える
0

MySQLConnector ドキュメントのセキュリティ セクションによると、はtrustCertificateKeyStoreUrlURL を入力として受け取ります。

つまり、file:ローカル ファイルで機能させるには、プレフィックスを付ける必要があります。つまり、トラストストアへのパスを として設定する必要がありますfile:path\to\truststore

clientCertificateKeyStoreUrlそのパラメーターも使用している場合、同じことが にも当てはまります。

于 2016-05-12T14:24:16.300 に答える