2016-05-20 123 views
1

我試圖發送一個HTTPS請求來發送Apple Push Notifications(APN)來使用SoapUI 5.2.1來測試我的應用程序。我對SoapUI進行了以下配置更改以支持TLS 1.2連接。獲取不受支持的SoapUI中的密碼套件5.2.1發出HTTPS請求時

  • 我創建了一個JKS密鑰庫,並增加了對iOS的應用程序和私有密鑰鏈中的所有證書api.development.push.apple.com
  • 在soapUI的SSL設置我已經設置了密鑰庫,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文件已被替換爲Unlimited Strength Jurisdiction策略文件。

如果我使用捲曲發送使用詳細推送通知(-vvv),協商的結果在TLS 1.2密ECDHE-RSA-AES256-GCM-SHA384。因此,在與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 POST請求https://api.development.push.apple.com/3/device/{device id}我仍然得到錯誤ERROR:java.lang.IllegalArgumentException: Unsupported ciphersuite ECDHE-RSA-AES256-GCM-SHA384

當使用Java 7 JSSE Cipher SuiteTLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384仍然得到支持的加密套件錯誤。

日誌中沒有詳細信息..任何幫助/想法/想法/提示?

更新1

我使用了SoapUI 5.2.1與集成的Java 7 Java的Mac OS X安裝並根據Java 7 documentation不支持TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384密碼套件。

用SoapUI代替SoapUI 5.2.1 Mac OS X安裝程序5.2.1不包含Java的Mac OS X zip。我安裝了Java 1.8.0_60,它支持必要的密碼套件。 (參考here

修改了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 

獲取下一個錯誤,現在ERROR:org.apache.http.client.ClientProtocolException。 可能與SoapUI不支持的HTTP/2協議有關。

更新2

如所建議的通過@vzamanillo爪哇8使用TLS 1.2默認,因此除了Java選項可以被移除。CipherSuite問題現已解決,錯誤;

ERROR:org.apache.http.client.ClientProtocolExceptionis

是不相關的SSL,TLS或加密套件的錯誤,但可能與了SoapUI不支持HTTP/2的問題。

+1

如果您使用的是Java 8則不需要設置在Java選項SOAPUi腳本,Java 8默認使用TLSv1.2,併爲連接選擇合適的密碼。您能否使用HTTP日誌和ssl調試日誌更新您的問題? – vzamanillo

+0

好像你需要設置一些HTTP頭,也許內容長度或身份驗證類型,發佈HTTP線日誌,請。 – vzamanillo

+0

服務器需要HTTP/2連接,可以通過ALPLN進行協商。自Java 9起支持ALPN。試圖在Java 9 pre release上運行SoapUI,但不起作用。 – pcvnes

回答

2

的TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384密碼組不是由Java 7的支持,因此使用的Java 8了SoapUI 5.2.1。設置Java選項Dsoapui.https.protocols = TLSv1.2工作,迫使TLSc1.2也沒有必要,因爲這是Java 8的默認

相關問題