wake-up-neo.com

SoapUI kann keine Verbindung zu HTTPS herstellen (SSLPeerUnverifiedException)

Ich muss einen Webdienst testen, der in einer Umgebung mit einer früheren Version bereitgestellt wird, die auf einem HTTPS-Endpunkt bereitgestellt wird. Unglücklicherweise schlägt SoapUI mit der SSLPeerUnverifiedException: peer not authenticated-Ausnahme fehl. Ich habe beide Versionen 4.6.4 und sehr frisch 5.0 verwendet.

Env:

endpunkt ist https, startcom-Zertifikat, Netzwerk verwendet Proxy (aber dasselbe Problem ohne Proxy mit anderem Netzwerk)

Ich habe viele Stunden verbracht, vielleicht einen Tag nach einer Lösung gegoogelt. Insbesondere dieser Link sah vielversprechend aus: https://forum.soapui.org/viewtopic.php?f=13&t=20866

Ich habe Endpoint-Zertifikat über Firefox extrahiert und es vertrauen lassen. Also habe ich cacerts von der Installation von soapui JVM geändert:

..\SoapUI-4.6.4\jre\lib\security>keytool -import -alias HOSTNAME 
-file endpoint.crt -keystore cacerts -storepass changeit

Starten Sie neu und dann erneut getestet - fehlschlagen.

Dann habe ich einen anderen Ansatz gewählt und die SoapUI JVM allen StartCom-Zertifikaten vertrauen lassen.

keytool -import -trustcacerts -alias startcom.ca -file ca.crt -keystore cacerts
keytool -import -alias startcom.ca.sub -file sub.class1.server.ca.crt -keystore cacerts

Starten Sie neu und sind erneut fehlgeschlagen. Was soll ich jetzt noch tun?

BEARBEITEN

2014-05-30 08:39:53,782 ERROR [errorlog] javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at Sun.security.ssl.SSLSessionImpl.getPeerCertificates(Unknown Source)
at org.Apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.Java:128)
at org.Apache.http.conn.ssl.SSLSocketFactory.createLayeredSocket(SSLSocketFactory.Java:446)
at org.Apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.Java:499)
at com.eviware.soapui.impl.wsdl.support.http.SoapUISSLSocketFactory.createLayeredSocket(SoapUISSLSocketFactory.Java:268)
at org.Apache.http.impl.conn.DefaultClientConnectionOperator.updateSecureConnection(DefaultClientConnectionOperator.Java:200)
at org.Apache.http.impl.conn.AbstractPoolEntry.layerProtocol(AbstractPoolEntry.Java:277)
at org.Apache.http.impl.conn.AbstractPooledConnAdapter.layerProtocol(AbstractPooledConnAdapter.Java:142)
at org.Apache.http.impl.client.DefaultRequestDirector.establishRoute(DefaultRequestDirector.Java:758)
at org.Apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.Java:565)
at org.Apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.Java:415)
at org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:820)
at org.Apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.Java:754)
at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport$Helper.execute(HttpClientSupport.Java:238)
at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport.execute(HttpClientSupport.Java:348)
at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.submitRequest(HttpClientRequestTransport.Java:318)
at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.Java:232)
at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.Java:123)
at Java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at Java.util.concurrent.FutureTask.run(Unknown Source)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

SSL Debug:

adding as trusted cert:
Subject: CN=StartCom Certification Authority, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
Issuer:  CN=StartCom Certification Authority, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL
Algorithm: RSA; Serial number: 0x1
Valid from Sun Sep 17 21:46:36 CEST 2006 until Wed Sep 17 21:46:36 CEST 2036

Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
Thread-20, WRITE: TLSv1 Handshake, length = 186
Thread-20, READ: TLSv1 Alert, length = 2
Thread-20, RECV TLSv1 ALERT:  warning, unrecognized_name
SSL - handshake alert: unrecognized_name
Thread-20, handling exception: javax.net.ssl.SSLProtocolException: handshake alert:  unrecognized_name
Thread-20, SEND TLSv1 ALERT:  fatal, description = unexpected_message
Thread-20, WRITE: TLSv1 Alert, length = 2
Thread-20, called closeSocket()
Thread-20, IOException in getSession():  javax.net.ssl.SSLProtocolException: handshake alert:  unrecognized_name
09:16:12,482 ERROR [WsdlSubmit] Exception in request: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
6
Leos Literak

Ok, das Update für dieses Problem ist zu setzen

-Djsse.enableSNIExtension=false

im $SOAPUI_HOME/bin/soapui.bat

Der Grund ist in dieser Antwort beschrieben: https://stackoverflow.com/a/14884941/1639556

Verdauen:

In Java 7 wurde die SNI-Unterstützung eingeführt, die standardmäßig aktiviert ist. Ich habe herausgefunden, dass bestimmte falsch konfigurierte Server im SSL-Handshake eine Warnung "Unbekannter Name" senden, die von den meisten Clients außer Java ignoriert wird.

Update : für SoapUI 5.2.1 musste ich eine Datei ändern SoapUI-5.2.1.vmoptions, weil das Ändern der bat -Datei nicht geholfen hat.

12
Leos Literak

Für jeden, der einen Mac sucht, der dieselbe Antwort sucht (ich kann die ausgewählte Antwort leider nicht kommentieren, da ich noch nicht genug Rufpunkte habe, um einen Kommentar zu verfassen !!!) . Bearbeiten von soapui.sh won ' Dies hat keine Auswirkungen, wenn Sie die App starten, indem Sie auf das Symbol in Ihrem Anwendungsordner klicken oder Spotlight verwenden.

/Applications/SoapUI-5.0.0.app/Contents

Bearbeiten Sie vmoptions.txt und fügen Sie am Ende der Datei -Dcom.Sun.net.ssl.checkRevocation = false hinzu. Speichern Sie die Datei und starten Sie sie erneut. 

5
bawinnicki

Ich denke, dass du die Dinge gut machst. Wenn Sie das Serverzertifikat in Ihren Truststore laden, muss die Verbindung funktionieren. Möglicherweise passiert etwas, beispielsweise eine Weiterleitung. Wenn Sie möchten, können Sie versuchen, die Überprüfung des SSL-Serverzertifikats zu deaktivieren. Wenn Sie eine SOAPUI-Standalone-Version verwenden, bearbeiten Sie $SOAPUI_HOME/bin/soapui.bat oder $SOAPUI_HOME/bin/soapui.sh und fügen Sie diesen Parameter -Dcom.Sun.net.ssl.checkRevocation=false als Java-Option hinzu:

soapui.bat

set Java_OPTS=%Java_OPTS% -Dcom.Sun.net.ssl.checkRevocation=false

soapui.sh

Java_OPTS="$Java_OPTS -Dcom.Sun.net.ssl.checkRevocation=false"

Hoffe das hilft,

4
albciff

Stellen Sie außerdem sicher, dass Sie Fiddler nicht ausführen, das versucht, als Proxy für alle von SoapUI gestellten Anforderungen zu fungieren. Wenn Sie möchten, dass Fiddler funktioniert, müssen Sie das Fiddler-Stammzertifikat Ihrem Java-Truststore hinzufügen.

Siehe auch: SoapUI arbeitet nicht mit Fiddler für REST Dienstetests

2
franzjaeger

Ich erhielt auch folgende Nachricht:

Error getting response; javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated

Das Problem, das ich hatte, war nur bei einem Proxy-Server. Direkt mit dem Internet verbunden, ohne dass ein Proxy funktionierte.

Ich habe alle diese Lösungen ausprobiert und keine hat funktioniert. 

Ich habe sogar versucht, die vertrauenswürdigen CA-Zertifikate in einem Java-Schlüsselspeicher unter WS-Sicherheitskonfigurationen -> Truststores hinzuzufügen, und erhielt immer noch den Fehler. 

Ich habe ein Upgrade auf SoapUI 5.2.1 durchgeführt und das Problem wurde behoben.

Vielleicht lohnt es sich, es auszuprobieren.

2
StephaneD

Wenn Sie einen Proxy verwenden, versuchen Sie, diesen zu umgehen (über ProxySettings sind SoapUI-Einstellungen)

2
NevinJ