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

岩瀬 肇 iwase-h @ cnt.mxy.nes.nec.co.jp
2006年 10月 23日 (月) 11:53:25 JST


岩瀬です。

おこめ様、コメントありがとうございます。
結論から言うと、まだうまくできていません。


> > > 2.Javaのシステムトラストストアに証明書をインポート
> > >
> >> >> keytool -keystore $JAVA_HOME/lib/security/cacerts -alias
> postgresql -import -file server.crt.der
> 
> Java Runtime でしょうか?
> Java SDK であれば $JAVA_HOME/jre/lib/security/cacerts の場合もあります。
> 元のファイルの所在を確認されていればいいのですが。
> 
> keytool -import -alias svpgsql -file server.crt -keystore
> /usr/java/jdk1.5.0_09/jre/lib/security/cacerts

その点については後ほど気が付いて、jre配下を指定するように修正しました。
ですが、やはり状況は変わりません。


> 
> > > 3.PostgreSQL接続時のURLに以下の2つを追加
> > >  ○ssl=true
> > >  ○sslfactory=org.postgresql.ssl.NonValidatingFactory
> > >
> > >   最終的なURLは以下のようになりました。
> > >   jdbc:postgresql://(サーバ名):(ポート番号)/(データベース名
> > >
> )?prepareThreshold=0&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory
> 
> ?ssl=true だけでよいのではないでしょうか?
> 
> > > 4.JAVAアプリケーション起動時引数に以下を追加
> > >  ○-Djavax.net.ssl.trustStore=$JAVA_HOME\lib\security\cacerts
> > >  ○-Djavax.net.ssl.trustStorePassword=changeit
> > >  ○-Djavax.net.debug=ssl(デバッグ用)
> 
> こちらも標準のcacertsを使うのなら必要ないと思います。

URLに「ssl=true」のみを指定し、起動時引数をしないで起動しましたが、
やはりエラーが出てしまいます。


一つ分かったことは、サーバのdataフォルダ配下に置いてある、
server.crtと同じroot.crtファイルを消した場合、
接続できるようになりました。
ただ、本当にSSL接続できているのか?まではまだ確認できていません。
以下のマニュアルを確認すると、
http://www.postgresql.jp/document/pg803doc/html/ssl-tcp.html
root.crtが無い場合、クライアントの認証は行わないと書いてある
ので、クライアントの証明書が何らかの理由で認証できていないようだと
いうところまではわかりました。

正直行き詰まっています。根本的にOpenSSLの処理が分かっていないのも
問題だと感じており、OpenSSLについても調査が必要なのかとも考えています。

すいません、何か他にアドバイスがあればお願い致します。
-- 
岩瀬 肇 <iwase-h @ cnt.mxy.nes.nec.co.jp>




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