2016-03-09 274 views
1

我們已經在我們的網站中集成了UPS網絡服務。最近我們從UPS得到了警告:使用TLS 1.2的PHP SOAP通信

有效的2016年1月26日,UPS的測試環境將需要 TLS 1.2安全協議,併爲您的系統 測試將非常具有可用。

2016年5月31日起生效,UPS將要求生產中的TLS 1.2安全協議 。在此日期之後,使用舊協議(TLS 1.1或更高版本)提交給 UPS的任何通信請求都將失敗。

我的問題是:

有沒有辦法使用TLS進行溝通PHP SOAP?我已經搜索了很多,但還找不到任何解決方案。

請建議

+0

[閱讀本文](https://bugs.php.net/bug.php?id=65329&edit=1)。 –

回答

0

最後我得到這個issue.It解決方案需要的OpenSSL> 1.0.1或 NSS> 3.15,在我的情況下,我們的服務器都支持SSL版本是NSS/3.19.1 基本ECC因此無需改變任何碼。

4

我也遇到過這個問題。我用這個來強制TLS通信。

$mode = array 
(
    'soap_version' => 'SOAP_1_1', // use soap 1.1 client 
    'trace' => 1, 
    'stream_context' => stream_context_create(array(
     'ssl' => array(
      'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, 
     ) 
    )) 
); 

// initialize soap client 
$client = new SoapClient($this->wsdl, $mode); 

但我一直有甲基苯丙胺巫婆的問題(在我的開發環境),包括不使用TLS 1.2支持OpenSSL版本。

+0

讓我試試........ –

+0

當我打印 $ client - > __ getLastRequestHeaders(); $ client - > __ getLastResponseHeaders(); 與stream_context和沒有stream_context都打印相同的結果 –

+0

如何檢查我們的請求正在使用tsl1調用。 2協議? –