2013-02-18 17 views
6
呼び出している間、私は、Tomcatの7.xの

PKIXパスの構築に失敗しました:sun.security.provider.certpath.SunCertPathBuilderException:要求されたターゲット

でTLS接続(https)でスルーWebサービスの呼び出しを作っています

に有効な証明書パスを見つけることができませんがWebService、次のエラーが発生しています。問題は何でしょうか?私は証明書とCAを作成しようとしました。 FYI

-

https://sites.google.com/site/ddmwsst/create-your-own-certificate-and-ca私はCA証明書と他の証明書をインポートし、まだ私はこの問題を取得しています。ご意見をお聞かせください。

Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'https://localhost:8443/myDomain/MyService?wsdl'.: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(Unknown Source) 
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) 
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) 
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:262) 
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:205) 
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92) 
... 37 more 
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1902) 
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) 
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) 
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341) 
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153) 
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) 
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:804) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1032) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) 
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:515) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1299) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) 
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:632) 
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:799) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) 
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:237) 
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300) 
    ... 43 more 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385) 
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) 
    at sun.security.validator.Validator.validate(Validator.java:260) 
    at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326) 
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231) 
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126) 
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323) 
    ... 61 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196) 
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268) 
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380) 

私はローカルで作成して証明書をテストしています。だから私はこれらの手順に従った。

キー>キーツール-genkey -alias TLS -keystore TLSKeyStore.jks -keyalg RSA -sigalg SHA1withRSA キー>キーツール-export -alias TLS -file TLS.cer -keystore TLSKeyStore.jks キー>キーツール-certreq -alias TLS -keystore TLSKeyStore.jks -file TLS.csr

CA>設定RANDFILE =ランド

CA>のopenssl reqを-new -keyout TLSkey.pem -out TLSreq.pem -config C:\ OpenSSLの-Win64の\ bin \ openssl.cfg

CA> openssl x509 -signkey TLSkey.pem -req -days 3650 -in TLSreq.pem -out TLSroot.cer-extensions v3_ca

CA> opensslのX509 -CA TLSroot.cer -CAkey TLSkey.pem -CAserial serial.txt -req -in ../Keys/TLS.csr -out ../Keys/TLSTestCA.cer -days 365

最後に

キー>のkeytool -import -alias TLSCA -file ../CA/TLSroot.cer -keystore TLSKeyStore.jks キー>のkeytool -import -alias TLS -file TLSTestCA.cer -keystore TLSKeyStore.jks

答えて

4

私はこの問題を解決する方法を得た。

このリンクのInstallCert.javaを参照してください。このプログラムをスタンドアロンとして実行するには、引数をlocalhost:9443とし、プログラムでjssecacertsというファイルをeclipseで作成します。 jssecacertsファイルをJDK_HOME \ jre \ lib \ security \フォルダにコピーします。それは問題を解決する必要があります

ハッピーTLSのセットアップ!

+2

http://infposs.blogspot.it/2013/06/installcert-and-java-7.htmlで少し修正されたバージョンのプログラムです Java 7(InstallCertを2回目に実行して証明書が正しくインストールされたかどうかを確認するときにUnsupportedOperationExcetpion)の問題を解決します。 – Pino

3

ここでは、次のエラー修正するために証明書をインポートする方法の全体的な概要です:ブラウザでURLに証明書

  1. ゴーをインポートする方法

    Error while trying to execute request. javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

    は、HTTPSをクリックしてください証明書チェーン(URLアドレスの隣に小さなロック記号)を証明書をエクスポート

    • [詳細情報]> [セキュリティ]> [証明書の表示]> [詳細]> [エクスポート..]をクリックします。
    • あなたは
  2. $ JAVA_HOME/jre/lib/security/cacertsに
  3. インポートすべての* .derのファイルを見つけてインポートする必要があるすべての証明書の.der

  4. 繰り返しとして保存次のコマンドを使用してcacertsファイルに追加します。

    sudo keytool -import -alias mysitestaging -keystore $JAVA_HOME/jre/lib/security/cacerts -file staging.der 
    sudo keytool -import -alias mysiteprod -keystore $JAVA_HOME/jre/lib/security/cacerts -file prod.der 
    sudo keytool -import -alias mysitedev -keystore $JAVA_HOME/jre/lib/security/cacerts -file dev.der 
    
  5. デフォルトのキーストアパスワードは、あなたが証明書のフィンガープリントを示し、このコマンドを使用して行われた変更を見ることができる「changeitと」

  6. です。これで問題が解決しない場合

    keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts 
    
  7. 、引数としてこれらのJavaオプションを追加してみてください:

    -Djavax.net.ssl.trustStore="$JAVA_HOME/jre/lib/security/cacerts" 
    -Djavax.net.ssl.trustStorePassword="changeit" 
    

私の推測では、あなたがステップを見逃しているかもしれないということです。間違った証明書をインポートしたことを認識するまでは、同じエラーが発生していました。

関連する問題