SSLJDBC接続のテスト

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 の書き込みの詳細については、以下を参照してください: