SSLJDBC接続のテスト¶
Javaのデフォルトメカニズム( LibPQFactory ではない)を使用してSSL接続を作成している場合、サーバー証明書をJavaで使用可能にする必要があります。これは、以下に示す手順を実装することで実現できます。
Javaプログラムで以下のプロパティを設定します。
props.setProperty(“ssl”,“true”);または、接続URLでプロパティを設定できます。
文字列url=“jdbc:edb://localhost/test?user=fred&password=secret&ssl=true”;
サーバー証明書をJava形式に変換します。
$ openssl x509 -in server.crt -out server.crt.der -outform der
この証明書をJavaのシステムトラストストアにインポートします。
$ keytool -keystore $JAVA_HOME/lib/security/cacerts -alias postgresql -import -file server.crt.der注釈
cacertsキーストアのデフォルトのパスワードはchangeitです。postgresqlのエイリアスは重要ではなく、任意の名前を選択できます。
システムcacertsトラストストアにアクセスできない場合は、次のように独自のトラストストアを作成します。
$ keytool -keystore mystore -alias postgresql -import -file server.crt.der
Javaアプリケーションを起動し、プログラムをテストします。
$ java -Djavax.net.ssl.trustStore=mystore com.mycompany.MyApp
例:
$java -classpath .:/usr/edb/jdbc/edb-jdbc18.jar– Djavax.net.ssl.trustStore=mystore pg_test2 public
注釈
接続の問題のトラブルシューティングを行うには、javaコマンドに-Djavax.net.debug=sslを追加します。
証明書検証なしでSSLを使用する¶
デフォルトでは、 SSL=true と接続URLパラメーター sslfactory=com.edb.ssl.NonValidatingFactory の設定により、接続が暗号化されますが、SSL証明書は検証されません。証明書の検証を強制するには、 Custom SSLSocketFactory を使用する必要があります。
Custom SSLSocketFactory の書き込みの詳細については、以下を参照してください: