/ / टॉमकैट स्व-हस्ताक्षरित प्रमाण पत्र के साथ एक सर्वर से फ़ाइल डाउनलोड नहीं करेगा - टॉमकैट, एसएसएल, स्व-हस्ताक्षरित, शंबूक

टोमकैट स्वयं से हस्ताक्षरित प्रमाणपत्र वाले सर्वर से फ़ाइल डाउनलोड नहीं करेगा - टोमकैट, एसएसएल, स्वयं हस्ताक्षरित, shibboleth

मेरे पास एक (रिमोट) टॉमकैट सर्वर (idp.mydomain) है।com) जहां मैंने शिबोलेथ आईडीपी तैनात किया। संचार एसएसएल पर एक स्व-हस्ताक्षरित प्रमाण पत्र के साथ सुरक्षित है। यदि मैं अपने ब्राउज़र में अपवाद जोड़ता हूं, तो मैं मेटाडेटा कॉन्फ़िगरेशन XML तक पहुंच सकता हूं।

एक दूसरे (स्थानीय) टॉमकैट (sp.localhost.mydomain) पर।com) मेरे पास एक स्प्रिंग एप्लिकेशन है जो मेरी IDP के विरुद्ध प्रमाणित करने के लिए SAML का उपयोग करता है। हालाँकि, मुझे SP शुरू करते समय निम्नलिखित प्रमाणपत्र त्रुटि मिलती है:

    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.writeRecord(SSLSocketImpl.java:747)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
at org.apache.commons.httpclient.HttpConnection.flushRequestOutputStream(HttpConnection.java:828)
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2116)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
at org.opensaml.saml2.metadata.provider.HTTPMetadataProvider.fetchMetadata(HTTPMetadataProvider.java:250)
... 30 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)
... 47 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:146)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
... 53 more

यह काम करता है अगर मैं एक वैध प्रमाण पत्र के साथ सर्वर के खिलाफ जाता हूं, लेकिन मैं अपने जिद्दी टॉमकट को स्वयं-हस्ताक्षरित लोगों को स्वीकार करने के लिए कैसे मना सकता हूं?

उत्तर:

जवाब के लिए 0 № 1

आपको एक जेकेएस ट्रस्टस्टोर बनाने और स्वयं-हस्ताक्षरित प्रमाण पत्र के सार्वजनिक भाग को शामिल करने की आवश्यकता है। फिर, एसएसएल कनेक्शन सर्वर प्रमाणपत्र को स्वीकार करेगा

के साथ टॉमकैट शुरू करें

-Djavax.net.ssl.trustStore=/path/to/truststore.jks
-Djavax.net.ssl.trustStorePassword=truststorePassword

देख tomcat में jvm विकल्प जोड़ें