2016-09-09 5 views
10

में समस्या है जिसमें मुझे समस्या है here भी वर्णित है। बात यह है कि मैंने एक प्रमाणपत्र बनाया और इसे टोमकैट की कीस्टोर में जोड़ा, और फिर मैंने इसे cacerts ट्रस्टस्टोर पर कॉपी किया। हालांकि, किसी भी तरह से मुझे अभी भी यह त्रुटि मिलती है।पीकेईक्स पथ निर्माण विफल रहा, लेकिन प्रमाणपत्र कैक्रर्ट्स

मैंने क्या किया:

1) Keytool -genkey -alias cas -keyalg आरएसए -keystore cas.keystore -storepass changeit

2) Keytool -exportcert -alias cas - फ़ाइल cas.crt -keystore cas.keystore

चरण 2) क्योंकि मैं अपने बिल्ला कुंजीस्टोर में प्रमाण पत्र रखना चाहते थे और cacerts

3) Keytool आयात -alias cas -file cas.crt -keystore "C: \ Program Files \ जावा \ jdk1.8.0_77 \ JRE \ lib \ सुरक्षा \ cacerts"

4) Keytool -import -alias cas -file "सी: \ प्रोग्राम फ़ाइलें \ जावा \ jdk1.8.0_7 \ jre \ bin \ cas.crt" -किस्टोर "डी: \ पोर्टल \ apache-tomcat-8.0.3 \ conf \ portal .keystore "

तो अब चरण 3 और 4 के साथ मैंने अपने टॉमकैट कीस्टोर और ट्रस्टस्टोर cacerts में प्रमाणपत्र जोड़ा।

अब मैं अपने ट्रस्ट और कीस्टोर

इस आदेश के साथ

सूचीबद्ध कर सकते हैं ..

Keytool -List -v -keystore "C: \ Program Files \ जावा \ jdk1.8.0_77 \ JRE \ lib \ सुरक्षा \ cacerts "-alias

cas ... मैं इस मिल:

Keystore-Kennwort eingeben: 
Aliasname: cas 
Erstellungsdatum: 09.09.2016 
Eintragstyp: trustedCertEntry 

Eigentümer: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx 
Aussteller: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx 
Seriennummer: xxx 
Gültig von: Fri Sep 09 10:40:55 CEST 2016 bis: Thu Dec 08 09:40:55 CET 2016 
Zertifikat-Fingerprints: 
     MD5: .... 
     SHA1: .... 
     SHA256: .... 
     Signaturalgorithmusname: SHA256withRSA 
     Version: 3 

Erweiterungen: 

#1: ObjectId: 2.5.29.14 Criticality=false 
SubjectKeyIdentifier [ 
KeyIdentifier [... 
] 
] 

और इस के साथ:

Keytool -List -v -keystore 'डी: \ पोर्टल \ अपाचे-बिल्ला-8.0.30 \ conf \ portal.keystore "-alias cas

मैं इस मिल:

Keystore-Kennwort eingeben: 

Keystore-Typ: JKS 
Keystore-Provider: SUN 

Keystore enthält 1 Eintrag 

Aliasname: cas 
Erstellungsdatum: 09.09.2016 
Eintragstyp: trustedCertEntry 

    Eigentümer: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx 
    Aussteller: CN=xxx, OU=xxx, O=xxx, L=xxx, ST=xxx, C=xxx 
Seriennummer: ... 
Gültig von: Fri Sep 09 10:40:55 CEST 2016 bis: Thu Dec 08 09:40:55 CET 2016 
Zertifikat-Fingerprints: 
     MD5: ... 
     SHA1: ... 
     SHA256: ... 
     Signaturalgorithmusname: SHA256withRSA 
     Version: 3 

Erweiterungen: 

#1: ObjectId: 2.5.29.14 Criticality=false 
SubjectKeyIdentifier [ 
KeyIdentifier [ 
] 

] 

तो यह स्पष्ट नहीं है: प्रमाण पत्र (कैस) ही हैं।

तो मेरी धारणा यह थी कि प्रमाण पत्र अब टॉमकैट सर्वर और ट्रस्टस्टोर cacerts की कीस्टोर में है।लेकिन किसी भी तरह मैं अभी भी इस अपवाद जब मैं कैस सर्वर पर अपनी उपलब्धियों को प्रवेश किया और रीडायरेक्ट (पूर्ण स्टैकट्रेस bellow) मिलती है:

HTTP Status 500 - 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 

ये मेरी tomcats server.xml में मेरी कनेक्टर्स हैं:

<Connector port="8743" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" 
       maxThreads="150" scheme="https" keystoreFile="${catalina.base}/conf/portal.keystore" keystorePass="changeit" 
       secure="true" connectionTimeout="240000" 
       clientAuth="false" sslProtocol="TLS" allowUnsafeLegacyRenegotiation="true" /> 

    <!-- Define an AJP 1.3 Connector on port 8009 --> 
    <Connector port="8309" protocol="AJP/1.3" redirectPort="8743" /> 

क्या है मेरी समस्या का संभावित कारण? शुरुआत में उल्लेखित सभी अन्य धागे बताते हैं कि ओपी ने कैलकर्ट फ़ाइल में प्रमाण पत्र आयात नहीं किया था, लेकिन मैंने किया।

पूर्ण स्टैकट्रेस: ​​

09-Sep-2016 12:05:30.146 SEVERE [http-bio-8743-exec-4] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [default] in context with path [/cas-sample] threw exception 
java.lang.RuntimeException: 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 org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:443) 
    at org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:41) 
    at org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:193) 
    at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:204) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:279) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
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:1949) 
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) 
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) 
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509) 
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) 
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) 
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) 
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1513) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) 
    at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:429) 
    ... 20 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:387) 
    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:324) 
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229) 
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) 
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) 
    ... 33 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141) 
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126) 
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) 
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) 
    ... 39 more 
+0

आप कनेक्टर में cas.keystore उपयोग करने के लिए अपना कुंजी फ़ाइल स्थान बदल सकते हैं? – Veeram

उत्तर

2

मेरी समस्या काफी अप्रत्याशित थी। मेरे पास टॉमकैट था जिसमें setenv.bat संशोधित किया गया था जिसमें विकल्प थे जो कि कीस्टोर के दूसरे स्थान पर इंगित करते थे। मुझे सामान्य रूप से टोमकैट और एप्लिकेशन सर्वर के बारे में बहुत कुछ नहीं पता था, इसलिए मैं इसे पहले नहीं समझ पाया।

2

आपका Connector तत्व एक कीस्ट्रोक परिभाषित करता है। यह एक ऐसा स्थान है जहां निजी कुंजी और उनके प्रमाणपत्रों की तलाश की जाएगी।

आपका अपवाद ट्रस्टस्टोर से संबंधित है, जो एक ऐसा स्थान है जहां विश्वसनीय सीए कर्ट हैं या नहीं पाए जाते हैं।

आप किसी भी तरह बिलाव द्वारा प्रयोग किया जाता truststore परिभाषित करने की जरूरत है या तो विन्यास के माध्यम से या javax.net.ssl.trustStore प्रणाली संपत्ति के माध्यम से।

+0

मैंने पहले से ही दोनों किया था, काम नहीं किया। – Goldi

+0

मैं कैसे जांच कर सकते हैं क्या मान 'javax.net.ssl.trustStore' – Goldi

+0

आप सही विन्यास के साथ थे है। मेरा जवाब देखें ... – Goldi

2

आप tomcat/bin निर्देशिका पर नेविगेट कर सकते हैं। Catalina.sh संशोधित करें (या अपने os के आधार पर catalina.bat)।

नीचे दिए गए गुण JAVA_OPTS में जोड़ें।

JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=$CATALINA_HOME/certificates/truststore.ks -Djavax.net.ssl.trustStorePassword=truststorePassword -server" 

मुझे हाल ही में कुछ ट्रस्टस्टोर/कीस्टोर मुद्दों के माध्यम से लड़ना पड़ा। ट्रस्ट/कीस्टोरों को आसानी से देखने/संशोधित करने के लिए मुझे एक टूल मिला जो keystore explorer है।

+0

"ट्रस्टोर मुद्दों" ने मुझे चकित कर दिया –

संबंधित मुद्दे