Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SoapUI无法连接HTTPS(SSLPeerUnverifiedException)_Java_Ssl_Soapui - Fatal编程技术网

Java SoapUI无法连接HTTPS(SSLPeerUnverifiedException)

Java SoapUI无法连接HTTPS(SSLPeerUnverifiedException),java,ssl,soapui,Java,Ssl,Soapui,我需要测试部署到部署在HTTPS端点上的预发布环境中的web服务。不幸的是,SoapUI失败,出现SSLPeerUnverifiedException:peer not authenticated异常。我使用了4.6.4版和非常新鲜的5.0版 环境: 端点是https,startcom证书,网络使用代理(但同一问题没有不同网络的代理) 我花了很多时间,也许是一天的时间在谷歌上寻找解决方案。尤其是这个链接看起来很有希望: 我通过firefox提取端点证书并让它信任。因此,我修改了soapui JV

我需要测试部署到部署在HTTPS端点上的预发布环境中的web服务。不幸的是,SoapUI失败,出现
SSLPeerUnverifiedException:peer not authenticated
异常。我使用了4.6.4版和非常新鲜的5.0版

环境:

端点是https,startcom证书,网络使用代理(但同一问题没有不同网络的代理)

我花了很多时间,也许是一天的时间在谷歌上寻找解决方案。尤其是这个链接看起来很有希望:

我通过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
重新启动并再次失败。我现在还能做什么

编辑

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

我认为你做得很好。如果在信任库上加载服务器证书,则连接必须工作,可能发生了重定向之类的情况。如果需要,可以尝试禁用SSL服务器证书验证。如果使用SOAPUI独立版本,请编辑
$SOAPUI\u HOME/bin/SOAPUI.bat
$SOAPUI\u HOME/bin/SOAPUI.sh
,并将此参数
-Dcom.sun.net.ssl.checkRevocation=false
添加为java选项:

soapui.bat

set JAVA\u OPTS=%JAVA\u OPTS%-Dcom.sun.net.ssl.checkRevocation=false

soapui.sh

JAVA_OPTS=“$JAVA_OPTS-Dcom.sun.net.ssl.checkRevocation=false”


希望这有帮助,

好的,解决此问题的方法是设置

-Djsse.enableSNIExtension=false
$SOAPUI\u HOME/bin/SOAPUI.bat中

答案中描述了原因:

摘要:

Java7引入了默认启用的SNI支持。我发现某些配置错误的服务器会在SSL握手中发送“无法识别的名称”警告,而大多数客户端都会忽略该警告。。。除了Java


更新:对于SoapUI 5.2.1,我不得不更改一个文件
SoapUI-5.2.1.vmoptions
,因为修改
bat
文件没有帮助。

对于任何使用Mac寻找相同答案的人(对不起,我不会对所选答案发表评论,因为我还没有足够的信誉点来评论!!!)。 如果您通过单击应用程序文件夹中的图标或使用Spotlight启动应用程序,则编辑soapui.sh不会产生任何影响

/应用程序/SoapUI-5.0.0.app/Contents


编辑vmoptions.txt并将-Dcom.sun.net.ssl.checkRevocation=false添加到文件底部。。保存并重新启动

如果您使用的是代理,请尝试绕过该代理(通过ProxySettings即SoapUI首选项)

同时确保您未运行Fiddler,它将尝试充当SoapUI发出的任何请求的代理。如果要使其与Fiddler一起工作,需要将Fiddler根证书添加到Java信任存储中


另请参见:

我也收到了以下信息:

Error getting response; javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
我遇到的问题只是在通过代理服务器时。没有代理直接连接到Internet正在工作

我尝试了所有这些解决方案,但都没有奏效

我甚至尝试在WS-Security Configuration->Truststores下的Java密钥存储中添加受信任的CA证书,但仍然得到了错误

我升级到了SOAPUI5.2.1,现在问题已经解决了


您可能值得尝试一下。

我尝试使用了
-Dcom.sun.net.ssl.checkRevocation=false
-djse.enableSNIExtension=false
选项,这两个选项似乎都不起作用

所做的工作是将证书导入到SoapUI的证书存储中。我知道询问者指定他们已经这样做了,但不清楚证书存储SoapUI实际选择使用哪个

我可以通过执行以下操作导入证书并使用它:

  • 确保SoapUI已关闭
  • 从下载密钥库资源管理器(使用独立的“全部”版本)并将其解压缩到某个位置
  • 使用捆绑的SoapUI JVM从管理员命令提示符运行密钥库资源管理器
  • 在密钥库资源管理器中,单击“打开CA证书密钥库”
  • 现在转到“检查”>“检查SSL”,输入服务器的URL,单击“确定”查看“证书详细信息”对话框
  • 单击导入按钮并输入所需的别名,然后单击确定
  • 您应该会看到一个对话框,说明“受信任的证书导入成功”,单击“确定”将其取消。然后再次单击“确定”以关闭“证书详细信息”对话框
  • 按Ctrl+S或单击“保存”图标以更新根证书存储。退出密钥库资源管理器
  • 运行SoapUI,它就不会再悲惨地失败

  • 最后,SoapUI是一个糟糕的软件,如果可能的话,你应该尽量避免使用它。但这在大多数Java应用程序中都很常见。

    谢谢。我试过你的答案,但没用。我验证了该属性是在“帮助/系统属性”中设置的。设置此属性后,您是否会收到相同的错误?你能分享完整的stacktrace吗?问题的附件这对我在Windows 10上的SoapUI-5.1.3不起作用。连接得到reset@nl-这是另一个SoapUI、OS和java版本的旧响应。从评论的细节来看,很难看出你的案件会发生什么。考虑发布一个新的问题,包括更多的细节SoAPUI版本、java版本、OS和堆栈跟踪,这样会更容易得到帮助:谢谢。你提到soapui.bat是一个关键。我没有意识到我可以更改JVM参数。我有同样的问题,并尝试用“%JAVA%”-Djsse.enableSNIExtension=false%JAVA_OPTS%com.eviware.soapui.soapui%*修复它,但我仍然有一个例外。我对soapui.bat的修改可以吗?我在windows上使用它。比
    Error getting response; javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    
    C:\> "C:\Program Files\SmartBear\SoapUI-5.6.0\jre\bin\java.exe" -jar "path\to\kse.jar"