Связь PHP SOAP с использованием TLS 1.2

Мы интегрировали веб-службу UPS на наш сайт. Недавно мы получили предупреждение от UPS:

С 26 января 2016 г. для тестовой среды ИБП потребуется протокол безопасности TLS 1.2, и она будет доступна для тестирования вашей системы.

С 31 мая 2016 г. для UPS потребуется протокол безопасности TLS 1.2. После этой даты любые запросы на связь, отправленные в ИБП с использованием более старых протоколов (TLS 1.1 или более ранней версии), не будут выполняться.

Мой вопрос:

Есть ли способ передать PHP SOAP с помощью TLS? Я уже много гуглил, но пока не нашел решения.

Пожалуйста, предложите


person Minesh Patel    schedule 09.03.2016    source источник
comment
Прочитайте это.   -  person Jay Blanchard    schedule 09.03.2016


Ответы (2)


Я тоже встретил эту проблему. Я использую это для принудительной связи 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);

Но у меня всегда есть проблема (в моей среде разработки) с тем, что MAMP включает версию openssl без поддержки TLS 1.2.

person Julien Croain    schedule 10.03.2016
comment
когда я печатаю $client-›__getLastRequestHeaders(); $client-›__getLastResponseHeaders(); с stream_context и без stream_context оба выводят один и тот же результат - person Minesh Patel; 11.03.2016
comment
Как проверить, что наш запрос вызывается с помощью tsl1. 2 протокол? - person Minesh Patel; 11.03.2016

Наконец-то я получил решение этой проблемы. Для этого требуется OpenSSL> 1.0.1 или NSS> 3.15, и в моем случае наш сервер поддерживает версию SSL — NSS/3.19.1 Basic ECC, поэтому нет необходимости изменять какой-либо код.

person Minesh Patel    schedule 15.03.2016