[pgsql-jp: 37586] JAVAアプリケーションからのSSL接続

岩瀬 肇 iwase-h @ cnt.mxy.nes.nec.co.jp
2006年 10月 19日 (木) 14:41:00 JST


岩瀬です。


JDBCドライバを使って、SSLに接続する方法について、
以前ゼロさんが「JDBCでのSSL 接続」の件名で
質問されていましたが、結局解決していないみたいなので、
すいませんがもう一度質問させてください。
どうしてもクライアントアプリケーション側の設定がうまくいかないのです。


私の環境は以下のような感じです。

PostgreSQL:8.0.3
JAVA:Sun J2SE 1.4.2_11
JDBCドライバ:8.0-317 JDBC 3
以下からダウンロードしました。
http://jdbc.postgresql.org/download.html


前提として、psqlにてPostgreSQLへSSL接続できたことは確認しています。
(同一PC内、TCP/IP経由共に)

手順は以下の通りです。

1.サーバ証明書をJAVAが理解できる形に変換

> openssl x509 -in server.crt -out server.crt.der -outform der

2.Javaのシステムトラストストアに証明書をインポート

> keytool -keystore $JAVA_HOME/lib/security/cacerts -alias postgresql -import -file server.crt.der

3.PostgreSQL接続時のURLに以下の2つを追加
 ○ssl=true
 ○sslfactory=org.postgresql.ssl.NonValidatingFactory

  最終的なURLは以下のようになりました。
  jdbc:postgresql://(サーバ名):(ポート番号)/(データベース名
)?prepareThreshold=0&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

4.JAVAアプリケーション起動時引数に以下を追加
 ○-Djavax.net.ssl.trustStore=$JAVA_HOME\lib\security\cacerts
 ○-Djavax.net.ssl.trustStorePassword=changeit
 ○-Djavax.net.debug=ssl(デバッグ用)


上記手順にて実行すると、
org.postgresql.util.PSQLException: The connection attempt failed.
と
Caused by: java.net.SocketException: Software caused connection abort: recv failed
という2つのエラーが出てしまいます。


JAVA寄りの話が多くて申し訳ありませんが、何かわかることがあればアドバイス
頂けますようお願い致します。
-- 
岩瀬 肇




pgsql-jp メーリングリストの案内