Zertifikat chaining Fehler in Websphere
Ich versuche zu verbrauchen, einen RESTful-Dienst von url https://someurl.com.
Ich habe die folgenden Eigenschaften in meinem code:
Security.setProperty("ssl.SocketFactory.provider", "com.ibm.jsse2.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "com.ibm.jsse2.SSLServerSocketFactoryImpl");
Security.setProperty("javax.net.ssl.trustStore", "cacerts.jks");
Security.setProperty("javax.net.ssl.keyStore", "keystore.jks");
Security.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
Security.setProperty("javax.net.ssl.trustStoreType", "JKS");
Die änderungen an der Konfiguration, die ich bisher getan habe:
- set
com.ibm.websphere.ssl.retrieveLeafCert
zutrue
- abgerufen das Zertifikat mit der url als someurl und port 443 und fügte ihn den truststore.
- neu gestartet die server
Aber ich bin immer folgende exception:
java.security.cert.CertPathValidatorException: Certificate chaining error
javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.h: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is:
java.security.cert.CertPathValidatorException: The certificate issued by CN=Walmart Root CA, O=Wal-Mart Stores Inc is not trusted; internal cause is:
java.security.cert.CertPathValidatorException: Certificate chaining error
at com.ibm.jsse2.o.a(o.java:22)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:423)
at com.ibm.jsse2.kb.a(kb.java:192)
at com.ibm.jsse2.kb.a(kb.java:176)
at com.ibm.jsse2.lb.a(lb.java:53)
at com.ibm.jsse2.lb.a(lb.java:464)
at com.ibm.jsse2.kb.s(kb.java:545)
at com.ibm.jsse2.kb.a(kb.java:530)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:79)
at com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:437)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:142)
at com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:686)
at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:98)
at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:13)
at com.ibm.net.ssl.www2.protocol.https.b.connect(b.java:6)
at com.dwl.tcrm.tester.RESTClient_2.main(RESTClient_2.java:76)
InformationsquelleAutor Ayan Biswas | 2014-12-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, Sie haben eine Webanwendung, die versuchen, den Zugriff auf restful-service.
Ersten, Sie sollten nicht legen Sie Ihre Geschäfte über
javax.net.ssl.*
Eigenschaften, aber die Verwendung von SSL-Konfigurationen in WebSphere. So kommentieren alle diesesetProperty()
Anrufe.Zweitens müssen Sie, um Ihre service-server-Zertifikats in den trust store.
Login zu web-admin-Konsole:
Security > SSL certificate and key management > Key stores and certificates > NodeDefaultTrustStore > Signer certificates
Retrieve from port
- Taste, und geben Sie den Hostnamen, port 443, und Alias.Retrieve singer information
- Taste.In einigen Versionen, das untergeordnete Zertifikat importiert wurde (nicht die Wurzel), in diesem Fall, müssen Sie manuell laden Sie die root-und intermediate-Zertifikat (z.B. über browser und importieren, dass man die
NodeDefaultTrustStore
, aber dieses mal mitAdd
button, nichtRetrieve..
Aber Sie sind, indem es der
(javax.net.ssl.trustStore", "cacerts.jks)
wahrscheinlich nichtNodeDefaultTrustStore
Haben, entfernen Sie diesesetProperty
Anrufe? Als Sie verweisen auf die verschiedenen Filialen als diese verwendet, der von WebSphere. Und solltest du nicht dencom.ibm.websphere.ssl.retrieveLeafCert
Eigenschafttrue
, als die ganze Idee der verketteten CERT root-cert statt des Blattes.OK. vielen Dank für den Hinweis auf den Fehler.Ich werde es mal ausprobieren
Hat es das Problem behoben?
Ich denke, diese Antwort sollte werden meistens akzeptiert, es löste das Problem für mich.
InformationsquelleAutor Gas
Dies bedeutet, dass Ihr Zertifikat nicht in cacerts. Versuchen Sie diesen Befehl ausführen als
keytool -list -v -keystore your_path_to_cacerts (Bieten die Liste von cert in cacerts)
schauen Sie durch den Abgleich der Seriennummer des Zertifikats. Wenn nicht, dann Folgen Sie bitte den unten angegebenen Schritten
Export der Intermediate-Zertifikat: Internet-Explorer -> Tools -> Internetoptionen -> Inhalt -> Zertifikate ->
Zum anzeigen der Pfad des Zertifikats: Zertifikat Auswählen -> Ansicht -> Zertifizierung Pfad ->
Zum Exportieren des Zertifikats: Zertifikat Auswählen -> Exportieren -> DER
codiert-Binär-Format -> Speichern ( die Von Firefox -> Tools -> Optionen -> Erweitert -> Verschlüsselung -> Zertifikate Anzeigen )
(Hier gegebenen - http://www-01.ibm.com/support/docview.wss?uid=swg21592616) danach fügen Sie das exportierte Zertifikat mit nachstehenden Befehl
keytool-import -trustcacerts -Keystore CACERTS(Pfad) -alias alias-file cert Pfad exportieren in Schritt 3
Mein Problem war das gleiche und ich bin in der Lage, es zu beheben, indem Sie die folgenden Schritte
InformationsquelleAutor Gourav Bhatia