[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 メーリングリストの案内