Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP SOAP Communication Using TLS 1.2

We have integrated UPS Web Service in our site. recently we got alert from UPS :

Effective January 26, 2016,the UPS test environment will require the TLS 1.2 security protocol, and willbe available for your system testing.

Effective May 31, 2016,UPS will require the TLS 1.2 security protocol in production. After that date,any communication requests submitted to UPS using older protocols (TLS 1.1 orearlier) will fail.

My question is :

Is there any way to communicate PHP SOAP using TLS ? i have already googled a lot but could not find any solution yet.

Please suggest

like image 433
Minesh Patel Avatar asked Mar 09 '16 09:03

Minesh Patel


2 Answers

I ran into this problem as well. Here is what I use this to force TLS communication.

$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);

I always have a problem on my dev environment with MAMP which includes a version of openssl without TLS 1.2 support.

like image 174
Julien Croain Avatar answered Nov 09 '22 05:11

Julien Croain


Finally i got solution for this issue.It require OpenSSL > 1.0.1 or NSS > 3.15 and in my case our server support SSL Version is NSS/3.19.1 Basic ECC so no need to change any code.

like image 35
Minesh Patel Avatar answered Nov 09 '22 05:11

Minesh Patel