2013-02-18 70 views
6

मैं बिलाव 7.xPKIX पथ निर्माण विफल रहा: sun.security.provider.certpath.SunCertPathBuilderException: अनुरोध लक्ष्य

में TLS कनेक्शन (https) के माध्यम से वेब सेवा कॉल करने कर रहा हूँ जबकि बुला लिए वैध प्रमाण पत्र पथ को खोजने में असमर्थ वेब सेवा, मुझे निम्न त्रुटि मिल रही है। मुद्दा क्या होगा? मैंने सर्टिफिकेट और सीए बनाने की कोशिश की है।

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) 

मैं स्थानीय रूप से निर्माण करके प्रमाण पत्र का परीक्षण कर रहा हूं। तो मैंने इन चरणों का पालन किया।

कुंजी> Keytool -genkey -alias टीएलएस -keystore TLSKeyStore.jks -keyalg आरएसए -sigalg SHA1withRSA कुंजी> Keytool निर्यात -alias टीएलएस -file TLS.cer -keystore TLSKeyStore.jks कुंजी> Keytool -certreq -alias टीएलएस -keystore TLSKeyStore.jks -file TLS.csr

सीए> सेट RANDFILE = रैंड

सीए> openssl अनुरोध -नया -keyout TLSkey.pem आउट TLSreq.pem -config C: \ OpenSSL-Win64 \ bin \ openssl.cfg

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

सीए> openssl X509 -CA TLSroot.cer -CAkey TLSkey.pem -CAserial serial.txt -req -इन ../Keys/TLS.csr आउट ../Keys/TLSTestCA.cer -days 365

कुंजी> keytool आयात -alias TLSCA -file ../CA/TLSroot.cer -keystore TLSKeyStore.jks कुंजी> keytool आयात -alias टीएलएस -file TLSTestCA.cer -keystore TLSKeyStore.jks

उत्तर

4

अंत में मुझे इस मुद्दे को हल करने का तरीका मिला।

इस लिंक में InstallCert.java देखें। इस कार्यक्रम को स्थानीयहोस्ट के रूप में तर्क पार करके स्टैंडअलोन के रूप में चलाएं: 9443 और प्रोग्राम jssecacerts ग्रहण के तहत फ़ाइल बनाता है। इस jssecacerts फ़ाइल को अपने जेडीके_एचओएमई \ jre \ lib \ security \ फ़ोल्डर में कॉपी करें। इससे समस्या

हैप्पी टीएलएस सेटअप को हल करना चाहिए !!!

+2

http://infposs.blogspot.it/2013/06/installcert-and-java-7.html पर उस प्रोग्राम का थोड़ा संशोधित संस्करण avaialble है यह जावा 7 के साथ एक समस्या हल करता है (जब आप प्रमाण पत्र सही तरीके से स्थापित किया गया है या नहीं, तो यह जांचने के लिए दूसरी बार इंस्टॉलकर्ट चलाते समय एक असमर्थितऑपरेशन एक्स्पेप्टियन)। – Pino

3

यहाँ कैसे प्रमाण पत्र आयात करने के लिए निम्न त्रुटि को ठीक करने का सारांश है:

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

प्रमाण पत्र आयात करने के लिए कैसे

  1. जाओ आपके ब्राउज़र में URL पर, HTTPS पर क्लिक करें प्रमाणपत्र श्रृंखला (यूआरएल पते के बगल में थोड़ा ताला प्रतीक) प्रमाण पत्र निर्यात करें
    • "अधिक जानकारी"> "सुरक्षा"> "प्रमाणपत्र दिखाएं"> "विवरण"> "निर्यात .." पर क्लिक करें।
    • सहेजें के रूप में किसी भी प्रमाणपत्र आयात करने के लिए
  2. जानें $ JAVA_HOME/JRE/lib/सुरक्षा/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. इस समस्या का समाधान नहीं होता है, तर्क के रूप में इन जावा विकल्प जोड़ने का प्रयास करें:

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

मेरा अनुमान है कि आप एक चरण छूट गया होगा हो सकता है। मुझे तब तक एक ही त्रुटि हो रही थी जब तक मुझे एहसास हुआ कि मैंने गलत प्रमाणपत्र आयात किया है