これは何よりも一般的なJava SSLの質問です...
CXF を使用して安全な Web サービスに接続しています。ローカルの Windows 開発マシンで実行すると、接続して動作しますが、アプリケーション サーバー (glassfish 3.1) に展開すると動作しなくなります。私はこれを得る:
Caused by: javax.net.ssl.SSLHandshakeException: SSLHandshakeException invoking https://vendorUrl: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1458)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1443)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:659)
証明書を domain\config\cacerts.jks ファイルや lib\security\cacerts ファイルなどに追加しようとしましたが、何度も尋ねられたので、それが機能しない理由は尋ねていません (ただし、 、理由を知りたい)。
私が混乱しているのは、キーストアに何も追加せずにローカル開発マシンでこれが機能するのはなぜですか? つまり、ブラウザー経由で URL に接続したり、何も追加したりしませんでした。Eclipse から初めて機能しただけです。なんで?