0

最初に:私は知っています、たくさんの「CertPathValidatorException」スレッドがあり、私はすでにそれらをチェックしました:)

次の問題がありますが、解決策が見つかりません。私は本当にいくつかの助けをいただければ幸いです。

JavaWebアプリケーションが実行されているtomcat6があります。ssl構成は問題ないようです。fe sslshopperで確認しても、問題はありません。ブラウザとhttps経由で問題なく接続できます。だから、道はよさそうだ。

Webアプリケーションのクラスから、apache HTTPClient(Simple SOAP POST)を使用してhttpsWebサービスを呼び出します。これを行うと、例外がスローされます。



    Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: CA key usage check failed: keyCertSign bit is not set
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1697)
        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:258)
        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:252)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1165)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:154)
        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:610)
        at sun.security.ssl.Handshaker.process_record(Handshaker.java:546)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:945)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1190)
        at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:657)
        at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:108)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
        at java.io.FilterOutputStream.flush(FilterOutputStream.java:140)
        at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:502)
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1973)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
        at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
        at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
        at net.umbrella.services.webclient.myclimate.MyClimateWebservice.callWebService(MyClimateWebservice.java:151)
        ... 67 more
Caused by: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: CA key usage check failed: keyCertSign bit is not set
        at sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:266)
        at sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:249)
        at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:162)
        at sun.security.validator.Validator.validate(Validator.java:235)
        at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:147)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:230)
        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:270)
        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1144)
        ... 85 more
Caused by: java.security.cert.CertPathValidatorException: CA key usage check failed: keyCertSign bit is not set
        at sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:153)

奇妙なことに、問題のあるHTTPClient呼び出しも含まれているシステムで単体テストを実行すると、すべて問題ありません。私にとって、それはTomcat構成の問題のように見えます。sslshopperでWebサービスのプロバイダーを確認すると、彼の証明書も見栄えがします。

私は実際にはこのトピックの専門家ではなく、ほとんどの構成は問題を見つけることができないホスティング業者によって行われていました(問題は数週間前に突然現れました)。

一般的な質問:WebアプリケーションからのHTTPClient呼び出しに使用されるキーストアはどれですか?システムキーストアまたはtomcatによって提供される必要がある特定のキーストア?とにかく、Tomcat ssl構成はWebアプリケーションからのhttps要求に接続されていますか?

ありがとう!

よろしくお願いします、

ロバート

解決済み:最終的に問題を解決しました。システムのベースjvmはSUNJDKでしたが、TomcatのOpenJDKはJVMとして定義されていました。SUN JDKに戻すと、すべての問題が解決しました。

4

1 に答える 1

0

この質問のTomcatの側面に答える:

WebアプリケーションからHTTPS接続を確立する場合、Tomcatはプロセスに関与しません。HttpClientが提供するAPIを使用してHttpClientを構成する必要があります。

表示されているエラーメッセージに関しては、トラストストアが正しくないようです。中間証明書が不足している可能性がありますか?

于 2013-03-22T11:58:58.753 に答える