SSL JDBC接続のテスト¶
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作成の詳細については、以下を参照してください。
https://jdbc.postgresql.org/documentation/head/ssl-factory.html
