2013-02-18 21 views
6

Sto facendo chiamata servizio Web tramite connessione TLS (https) in Tomcat 7.xPKIX edificio percorso non è riuscita: sun.security.provider.certpath.SunCertPathBuilderException: incapace di trovare valido percorso di certificazione al target richiesto

Mentre chiamando il WebService, sto seguendo l'errore. Quale sarebbe il problema? Ho provato a creare certificati e CA.

CRONACA - https://sites.google.com/site/ddmwsst/create-your-own-certificate-and-ca

ho importato certificato CA e di altri certificati ed ancora sto ottenendo questo problema. Per favore consiglio

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) 

Sto testando i certificati creando localmente. Quindi ho seguito questi passaggi.

Chiavi> keytool -genkey -alias TLS -keystore TLSKeyStore.jks -keyalg RSA -sigalg SHA1withRSA Chiavi> keytool -export -alias TLS -file TLS.cer -keystore TLSKeyStore.jks Chiavi> keytool -certreq -alias TLS -keystore TLSKeyStore.jks -file TLS.csr

CA> set RANDFILE = rand

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

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

risposta

4

Infine Ho avuto modo di risolvere questo problema.

Vedere questo InstallCert.java in questo collegamento. Esegui questo programma come Standalone passando argomenti come localhost: 9443 e Programma crea jssecacerts file in eclissi. Copia questo file jssecacerts nella cartella JDK_HOME \ jre \ lib \ security \. Questo dovrebbe risolvere il problema

Happy TLS setup !!!

+2

Una versione leggermente modificata di quel programma è disponibile all'indirizzo http://infposs.blogspot.it/2013/06/installcert-and-java-7.html Risolve un problema con Java 7 (un UnsupportedOperationExcetpion quando si esegue InstallCert la seconda volta per verificare se il certificato è stato installato correttamente). – Pino

3

Ecco un resoconto generale di come importare i certificati per risolvere il seguente errore:

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

Come importare certificati

  1. Vai a URL nel browser, cliccare su HTTPS catena di certificati (piccolo simbolo di blocco accanto all'indirizzo URL) a esportare il certificato
    • Fare clic su "maggiori informazioni"> "sicurezza"> "mostra certificato"> "dettagli"> "esportazione ..".
    • Salva come .der
    • Ripetere l'operazione per tutti i certificati necessari per importare
  2. Individuare $ JAVA_HOME/jre/lib/security/cacerts
  3. Importa tutti i file * .der nel file cacerts utilizzando il seguente:

    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 
    
  4. L'archivio chiavi di default password è 'changeit'

  5. È possibile visualizzare la modifica apportata con questo comando che mostra l'impronta digitale certificato.

    keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts 
    
  6. Se questo non risolve il problema, prova ad aggiungere queste opzioni Java come argomenti:

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

La mia ipotesi è che si potrebbe avere perso un passo. Avevo lo stesso errore fino a quando mi sono accorto di aver importato il certificato errato

Problemi correlati