SSL JDBC接続のテスト

Javaのデフォルトメカニズム( LibPQFactoryはない)を使用してSSL接続を作成している場合は、サーバー証明書をJavaで使用可能にする必要があります。これは、以下の手順を実装することで実現できます。

  1. Javaプログラムで以下のプロパティを設定します。

props.setProperty(“ssl”,“true”);

または、接続URLでプロパティを設定できます。

文字列url =“ jdbc:edb:// localhost / test?user = fred&password = secret&ssl = true ”;

  1. サーバー証明書をJava形式に変換します。
$ openssl x509 -in server.crt -out server.crt.der -outform der
  1. この証明書をJavaのシステムトラストストアにインポートします。
$ keytool -keystore $JAVA_HOME/lib/security/cacerts -alias postgresql
-import -file server.crt.der

注意

cacertsキーストアのデフォルトのパスワードはchangeitです。 postgresqlのエイリアスは重要ではないため、任意の名前を選択できます。

  1. システムcacertsトラストストアにアクセスできない場合は、次のように独自のトラストストアを作成します。

    $ keytool -keystore mystore -alias postgresql -import -file server.crt.der
    
  2. 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