Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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 发出HTTPS请求时在SoapUI 5.2.1中获取不受支持的密码套件_Java_Ssl Certificate_Soapui_Tls1.2 - Fatal编程技术网

Java 发出HTTPS请求时在SoapUI 5.2.1中获取不受支持的密码套件

Java 发出HTTPS请求时在SoapUI 5.2.1中获取不受支持的密码套件,java,ssl-certificate,soapui,tls1.2,Java,Ssl Certificate,Soapui,Tls1.2,我正在尝试发出HTTPS请求以发送Apple推送通知(APN),以使用SoapUI 5.2.1测试我的应用程序。我对SoapUI进行了以下配置更改,以支持TLS 1.2连接 我创建了一个jks密钥库,并为iOS应用程序和api.development.push.apple.com 在SoapUI SSL设置中,我设置了KeyStore、KeystorePassword并选中“需要客户端身份验证” 在SoapUI的vmoptions.txt中,我添加了以下Java选项 -Dsun.securi

我正在尝试发出HTTPS请求以发送Apple推送通知(APN),以使用SoapUI 5.2.1测试我的应用程序。我对SoapUI进行了以下配置更改,以支持TLS 1.2连接

  • 我创建了一个jks密钥库,并为iOS应用程序和
    api.development.push.apple.com
  • 在SoapUI SSL设置中,我设置了KeyStore、KeystorePassword并选中“需要客户端身份验证”
  • 在SoapUI的vmoptions.txt中,我添加了以下Java选项
-Dsun.security.ssl.allowUnsafeRenegotiation=true
-Dsoapui.https.protocols=TLSv1.2
-Dsoapui.https.ciphers=ECDHE-RSA-AES256-GCM-SHA384

  • SoapUI jre.bundle中的JCE文件已替换为无限强度权限策略文件
如果我使用curl发送一个使用verbose(-vvv)的推送通知,协商结果将是使用密码ECDHE-RSA-AES256-GCM-SHA384的TLS1.2。因此,在与SoapUI建立连接时,Apple APN服务器应该接受协议和密码

* Connected to api.development.push.apple.com (17.172.238.203) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ECDHE-RSA-AES256-GCM-SHA384
* successfully set certificate verify locations:
*   CAfile: /usr/local/etc/openssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Request CERT (13):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS handshake, CERT verify (15):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
现在在SoapUI中向
https://api.development.push.apple.com/3/device/{device id}
我仍然得到错误
错误:java.lang.IllegalArgumentException:不支持的密码套件ECDHE-RSA-AES256-GCM-SHA384

使用名称
TLS\u ECDHE\u RSA\u和\u AES\u 256\u GCM\u SHA384
时,仍然会出现不支持的密码套件错误

日志中没有详细信息。。有什么帮助/想法/想法/提示吗

更新1

我使用的是集成Java7的SOAPUI5.2.1MACOSX安装程序。 Java不支持TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384密码套件

将SoapUI 5.2.1 Mac OS X安装程序替换为不包含Java的SoapUI 5.2.1 Mac OS X zip。我安装了Java 1.8.0_60,它支持必要的密码套件。(参考)

修改了soapui.sh脚本以包含必要的Java选项

if [ $SOAPUI_HOME != "" ]
then
    JAVA_OPTS="$JAVA_OPTS -Dsoapui.ext.libraries=$SOAPUI_HOME/bin/ext"
    JAVA_OPTS="$JAVA_OPTS -Dsoapui.ext.listeners=$SOAPUI_HOME/bin/listeners"
    JAVA_OPTS="$JAVA_OPTS -Dsoapui.ext.actions=$SOAPUI_HOME/bin/actions"
    JAVA_OPTS="$JAVA_OPTS -Djava.library.path=$SOAPUI_HOME/bin"
    JAVA_OPTS="$JAVA_OPTS -Dwsi.dir=$SOAPUI_HOME/wsi-test-tools"
  JAVA_OPTS="-Dsun.security.ssl.allowUnsafeRenegotiation=true"
  JAVA_OPTS="-Dsoapui.https.protocols=TLSv1.2"
  JAVA_OPTS="-Dsoapui.https.ciphers=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"
  JAVA_OPTS="-Djavax.net.debug=ssl,handshake"
#uncomment to disable browser component
#   JAVA_OPTS="$JAVA_OPTS -Dsoapui.browser.disabled=true"
fi
现在获取下一个错误
错误:org.apache.http.client.ClientProtocolException
。 可能与HTTP/2协议有关,SoapUI可能不支持这些协议

更新2

正如@vzamanillo所建议的,Java 8默认使用TLS 1.2,因此可以删除添加的Java选项。密码套件问题现已解决,错误

错误:org.apache.http.client.ClientProtocolExceptionis


是一个与SSL、TLS或密码套件无关的错误,但可能是SoapUI不支持HTTP/2的问题。

Java 7不支持带有AES\u 256\u GCM\u SHA384密码套件的TLS\u ECDHE\u RSA\u,因此将Java 8用于SoapUI 5.2.1。设置Java选项Dsoapui.https.protocols=TLSv1.2强制TLSc1.2也是不必要的,因为这是Java 8的默认设置。

如果您使用Java 8,则不需要在SOAPUi脚本中设置Java选项,Java 8默认使用TLSv1.2,并为连接选择合适的密码。您可以用HTTP日志和ssl调试日志更新您的问题吗?似乎您需要设置一些HTTP头,可能是内容长度或身份验证类型,请发布HTTP wire日志。服务器需要HTTP/2连接,可以通过ALPLN进行协商。从Java9开始,ALPN就受到支持。尝试在Java 9预发行版上运行SoapUI,但不起作用。确实,SoapUI仅支持HTTP 1.0和HTTP 1.1,但您可以使用支持HTTP 2的库编写自己的Java客户端,如OkHttp、Netty或Jetty,这是一组Java上的示例