Zertifikat als nicht vertrauenswürdig Websphere
Ich habe eine web-Anwendung, die zum Aufruf eines SOAP-Web-service mittels SSL abgesichert .(https://zzzzzzzzzzzz/xxxxx
).
Den server senden zwei Zertifikate (Wurzel und Blatt), so dass ich den import der beiden Zertifikat mit der Eigenschaft : com.ibm.websphere.ssl.retrieveLeafCert
.
Zum aktivieren der ssl-Validierung für websphere ich nur hinzufügen, dass die Zertifikate In websphere :
SSL certificate and key management -> Schlüssel speichert und Zertifikat -> NodeDefaultTrustStore -> Signer cerificates -> " Retrieve from port :
- host : hostname
- port : 443
- alias : alias
Das problem ist, dass webshphere das Zertifikat nicht an und geben mir einen stacktrace,
used by: javax.net.ssl.SSLHandshakeException: SSLHandshakeException invoking `https://------------------------------` : com.ibm.jsse2.util.j: PKIX path building failed: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is:
java.security.cert.CertPathValidatorException: T`he certificate issued by CN=-------------------------------------------------------------------- is not trusted`; internal cause is:
java.security.cert.CertPathValidatorException: Certificate chaining error
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.6.0]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:56) ~[na:1.6.0]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:39) ~[na:1.6.0]
at java.lang.reflect.Constructor.newInstance(Constructor.java:527) ~[na:1.6.0]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1338) ~[cxf-rt-transports-http-2.7.4.jar:2.7.4]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1322) ~[cxf-rt-transports-http-2.7.4.jar:2.7.4]
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) ~[cxf-api-2.7.4.jar:2.7.4]
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:622) ~[cxf-rt-transports-http-2.7.4.jar:2.7.4]
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) ~[cxf-api-2.7.4.jar:2.7.4]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) ~[cxf-api-2.7.4.jar:2.7.4]
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530) ~[cxf-api-2.7.4.jar:2.7.4]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:463) ~[cxf-api-2.7.4.jar:2.7.4]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:366) ~[cxf-api-2.7.4.jar:2.7.4]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:319) ~[cxf-api-2.7.4.jar:2.7.4]
at org.apache.cxf.endpoint.ClientImpl.invokeWrapped(ClientImpl.java:354) ~[cxf-api-2.7.4.jar:2.7.4]
at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:385) ~[cxf-rt-frontend-jaxws-2.7.4.jar:2.7.4]
... 100 common frames omitted
`Caused by: javax.net.ssl.SSLHandshakeException`: com.ibm.jsse2.util.j: 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=--------------------------------------------------------- is not trusted`; internal cause is:
java.security.cert.CertPathValidatorException: Certificate chaining error
at com.ibm.jsse2.o.a(o.java:8) ~[na:6.0 build_20130515]
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:549) ~[na:6.0 build_20130515]
at com.ibm.jsse2.kb.a(kb.java:355) ~[na:6.0 build_20130515]
at com.ibm.jsse2.kb.a(kb.java:130) ~[na:6.0 build_20130515]
at com.ibm.jsse2.lb.a(lb.java:135) ~[na:6.0 build_20130515]
at com.ibm.jsse2.lb.a(lb.java:368) ~[na:6.0 build_20130515]
at com.ibm.jsse2.kb.s(kb.java:442) ~[na:6.0 build_20130515]
at com.ibm.jsse2.kb.a(kb.java:136) ~[na:6.0 build_20130515]
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:495) ~[na:6.0 build_20130515]
at com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:223) ~[na:6.0 build_20130515]
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:724) ~[na:6.0 build_20130515]
at com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:81) ~[na:6.0 build_20130515]
at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:8) ~[na:6.0 build_20130515]
at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:20) ~[na:6.0 build_20130515]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1043) ~[na:1.6.0]
at com.ibm.net.ssl.www2.protocol.https.b.getOutputStream(b.java:85) ~[na:6.0 build_20130515]
at org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream.setupWrappedStream(URLConnectionHTTPConduit.java:168) ~[cxf-rt-transports-http-2.7.4.jar:2.7.4]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1282) ~[cxf-rt-transports-http-2.7.4.jar:2.7.4]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1233) ~[cxf-rt-transports-http-2.7.4.jar:2.7.4]
at org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream.onFirstWrite(URLConnectionHTTPConduit.java:195) ~[cxf-rt-transports-http-2.7.4.jar:2.7.4]
at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:47) ~[cxf-api-2.7.4.jar:2.7.4]
at org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69) ~[cxf-api-2.7.4.jar:2.7.4]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1295) ~[cxf-rt-transports-http-2.7.4.jar:2.7.4]
... 110 common frames omitted
`Caused by: com.ibm.jsse2.util.j: PKIX path building failed:` java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.; internal cause is:
java.security.cert.CertPathValidatorException: T`he certificate issued by CN=-------------------------------------------- is not trusted`; internal cause is:
java.security.cert.CertPathValidatorException: Certificate chaining error
at com.ibm.jsse2.util.h.b(h.java:39) ~[na:6.0 build_20130515]
at com.ibm.jsse2.util.h.b(h.java:21) ~[na:6.0 build_20130515]
at com.ibm.jsse2.util.g.a(g.java:1) ~[na:6.0 build_20130515]
at com.ibm.jsse2.pc.a(pc.java:36) ~[na:6.0 build_20130515]
at com.ibm.jsse2.pc.checkServerTrusted(pc.java:19) ~[na:6.0 build_20130515]
at com.ibm.jsse2.pc.b(pc.java:51) ~[na:6.0 build_20130515]
at com.ibm.jsse2.lb.a(lb.java:65) ~[na:6.0 build_20130515]
... 128 common frames omitted
Caused by: java.security.cert.CertPathBuilderException: PKIXCertPathBuilderImpl could not build a valid CertPath.
at com.ibm.security.cert.PKIXCertPathBuilderImpl.engineBuild(PKIXCertPathBuilderImpl.java:411) ~[na:na]
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:258) ~[na:na]
at com.ibm.jsse2.util.h.b(h.java:107) ~[na:6.0 build_20130515]
... 134 common frames omitted
Caused by: java.security.cert.CertPathValidatorException: The certificate issued by CN=-------------------------------------------------------
at com.ibm.security.cert.BasicChecker.<init>(BasicChecker.java:111) ~[na:na]
at com.ibm.security.cert.PKIXCertPathValidatorImpl.engineValidate(PKIXCertPathValidatorImpl.java:178) ~[na:na]
at com.ibm.security.cert.PKIXCertPathBuilderImpl.myValidator(PKIXCertPathBuilderImpl.java:737) ~[na:na]
at com.ibm.security.cert.PKIXCertPathBuilderImpl.buildCertPath(PKIXCertPathBuilderImpl.java:649) ~[na:na]
at com.ibm.security.cert.PKIXCertPathBuilderImpl.buildCertPath(PKIXCertPathBuilderImpl.java:595) ~[na:na]
at com.ibm.security.cert.PKIXCertPathBuilderImpl.engineBuild(PKIXCertPathBuilderImpl.java:357) ~[na:na]
... 136 common frames omitted
Caused by: java.security.cert.CertPathValidatorException: Certificate chaining error
at com.ibm.security.cert.CertPathUtil.findIssuer(CertPathUtil.java:298) ~[na:na]
at com.ibm.security.cert.BasicChecker.<init>(BasicChecker.java:108) ~[na:na]
... 141 common frames omitted
Den gleichen code ist getestet in meinem lokalen Umwelt mit der einfachen Benutzung von Installcert.java und laufen meine tests mit -Djavax.net.ssl.trustStore=jssecacerts (jssecacerts ist die Datei generiert InstallCert.java).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Danke für die obige Antwort. In der Lage, das Problem zu beheben java.Sicherheit.cert.CertPathValidatorException: Zertifikat chaining Fehler mit der folgenden Konfiguration.
Für weitere Einzelheiten sehen Sie bitte diesen link,
java - Pfad zum trustStore - set-Eigenschaft funktioniert nicht?
Konfiguriert die Eigenschaften wie unten in der WebSphere
Server auswählen > Application-Server > ServerName > Prozess-Definition > Java Virtual Machine > Benutzerdefinierte Eigenschaften - > Neue.
a) javax.net.ssl.trustStore = jre_install_dir\lib\security\cacerts
Beispiel: C:\Program Files\WebSphere\AppServer\java\jre\lib\security\cacerts
b) javax.net.ssl.trustStorePassword = changeit (Standard)
c) javax.net.ssl.trustStoreType = jks
Für weitere Einzelheiten sehen Sie bitte diesen link,
http://publib.boulder.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=%2Fcom.ibm.isim.doc_6.0%2Finstalling%2Ftsk%2Ftsk_ic_ins_first_security_truststore.htm
Nachdem die Konfiguration war in der Lage, um zu sehen, in die Protokolle, die Zertifikate, die Hinzugefügt wird, um den trust store.
Dank,
Uday Nilajkar
Ich Teste Millionen websphere-Konfiguration .
Das einzige Verfahren, dass die Arbeit ist die Beschreibung in diesem link :
http://blog.xebia.com/2012/10/01/mutual-ssl-authentication-using-websphere-application-server-and-cxf/
Durch die Definition der cxf intercpter :
Weitere details finden Sie bitte unter :
https://github.com/vlussenburg/websphere-cxf-extensions#websphere-cxf-extensions
Vielen Dank für Ihre Hilfe Jungs .
Sollten Sie alle Zertifikats-Kette in Ihrer Konfiguration. In der Regel Zertifikat hat zumindest root-certificate of Authorization Center oder eine Kette ähnlich wie Zertifikate.
WAR erfordert signiertes Zertifikat standardmäßig.
Hier das problem, dass der Pfad des Zertifikats-generator (Ein Teil der Java-Cert Pfad API) nicht bauen kann, die Zertifikat-Kette während des SSL-Handshakes. Während des handshake das SSL-peer host senden Sie Ihr Zertifikat (Identität) an den client, um den client zu Vertrauen, dass bestimmtes Zertifikat eine Kette von Vertrauen muss aufgebaut werden, auf der client-Seite, dass das, was passiert, wenn Sie den Fehler. Das problem hier ist, dass die Kette des Vertrauens kann nicht erstellt werden, da fehlen dir entweder die Unterzeichner-Zertifikat und/oder das root-Zertifikat in Ihrem truststore (trust anchor).
Beachten Sie, dass die PKIX trustmanager führt einen "Umfang des Vertrauens" Validierung was bedeutet, dass Sie nicht brauchen eine vollständige Zertifikatkette auf der client-Seite zu erfüllen, die Vertrauensstellung mit der SSL-peer, Sie brauchen nur das signer - /intermediate-Zertifikate in Ihrem truststore. In der Tat, wenn Sie sollten das Blatt Zertifikat in der truststore -, sollte das auch machen Dinge, die funktionieren, da die Staaten, die Sie haben ausdrückliche Vertrauen, dass der betreffende Zertifikat und ein Zertifikat-chain-Validierung ist nicht erforderlich.
Vielleicht sollten Sie sich die folgenden technote.
Wenn Sie bei einem bestimmten Fixpack-level Sie können den Wert com.ibm.websphere.ssl.retrieveLeafCert zu wahr und erhalten das Blatt Zertifikat, wenn Abrufen von Port.
Hier sind die Schritte, um ein Zertifikat importieren, um die JVM für eine HTTPS WS-Aufruf:
A) Erhalten Sie das Zertifikat Importiert werden
B) Importieren Sie das Zertifikat
Klicken Sie auf OK.
Klicken Sie Auf Hinzufügen.
Klicken Sie auf OK.
Klicken Sie auf OK.