web-dev-qa-db-ja.com

SoapUIがHTTPSに接続できません(SSLPeerUnverifiedException)

HTTPSエンドポイントにデプロイされているプレリリース環境にデプロイされているWebサービスをテストする必要があります。残念ながら、SoapUIはSSLPeerUnverifiedException: peer not authenticated例外で失敗します。バージョン4.6.4と非常に新しい5.0の両方を使用しました。

環境:

エンドポイントはhttps、startcom証明書、ネットワークはプロキシを使用します(ただし、異なるネットワークのプロキシなしの同じ問題)

私は何時間も費やしましたが、たぶん解決策を探して1日を過ごしました。特にこのリンクは有望に見えました: https://forum.soapui.org/viewtopic.php?f=13&t=20866

Firefox経由でエンドポイント証明書を抽出し、信頼させます。だから、soapui JVMインストールからcacertsを変更しました。

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

再起動してから再テスト-失敗します。

その後、別のアプローチを取り、SoapUI JVMにすべてのStartCom証明書を信頼させました。

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

再起動して再び失敗しました。今、他に何をしますか?

編集

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デバッグ:

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
7
Leos Literak

OK、この問題の修正は設定することです

-Djsse.enableSNIExtension=false

$SOAPUI_HOME/bin/soapui.bat

理由はこの回答で説明されています: https://stackoverflow.com/a/14884941/1639556

ダイジェスト:

Java 7では、デフォルトで有効になっているSNIサポートが導入されました。特定の誤って構成されたサーバーが、SSLハンドシェイクで「認識できない名前」警告を送信することがわかりました。これは、Javaを除くほとんどのクライアントで無視されます。

Update:SoapUI 5.2.1の場合、ファイルを変更する必要がありましたSoapUI-5.2.1.vmoptionsbatファイルの変更が役に立たなかったため。

14
Leos Literak

同じ回答を探しているMacを使用している人は誰でも(申し訳ありませんが、コメントするのに十分な評判ポイントがないので、選択した回答にコメントできません!!!)。アプリケーションフォルダーのアイコンをクリックするか、Spotlightを使用してアプリを起動する場合、soapui.shを編集しても影響はありません。

/Applications/SoapUI-5.0.0.app/Contents

Vmoptions.txtを編集し、ファイルの下部に-Dcom.Sun.net.ssl.checkRevocation = falseを追加します。保存して再起動します。

5
bawinnicki

あなたは良いことをしていると思います。トラストストアにサーバー証明書をロードする場合、接続が機能する必要があります。たとえば、リダイレクトなどが発生している可能性があります。必要に応じて、SSLサーバー証明書の検証を無効にすることができます。 SOAPUIスタンドアロンバージョンを使用する場合は、$SOAPUI_HOME/bin/soapui.batまたは$SOAPUI_HOME/bin/soapui.shおよびこのパラメーターを追加-Dcom.Sun.net.ssl.checkRevocation=false as Javaオプション:

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"

お役に立てれば、

4
albciff

また、あなたがFiddlerを実行していないであることを確認してください。これは、SoapUIによって行われた要求のプロキシとして機能しようとします。 Fiddlerで動作させるには、JavaトラストストアにFiddlerルート証明書を追加する必要があります。

参照: SoapUIはRESTサービステスト)のfiddlerで動作していません

2
franzjaeger

私も次のメッセージを受け取っていました:

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

私が抱えていた問題は、プロキシサーバーを経由する場合のみでした。プロキシなしでインターネットに直接接続していました。

これらすべてのソリューションを試しましたが、どれも機能していませんでした。

WS-Security-Configurations-> Truststoresの下のJavaキーストアに信頼できるCA証明書を追加しようとしても、まだエラーが発生していました。

SoapUI 5.2.1にアップグレードしたところ、問題は解決しました。

試してみる価値があるかもしれません。

2
StephaneD

プロキシを使用している場合、同じものをバイパスしてみてください(ProxySettings経由でSoapUIの設定)

2
NevinJ