Arhn - архитектура программирования

PHP вызывает функцию мыла с использованием клиентского сертификата

Я столкнулся с проблемой вызова функции мыла. Я получаю сообщение об ошибке «Не удалось подключиться к хосту». Я использую «сервер wamp», «версию php 5.3.13» и «версию apache 2.2.22».

У меня есть сертификат клиента в формате .p12, файл wsdl доступен в локальной системе, и я протестировал вызов мыла с помощью soapUI-m-snapshot. Он отлично работает! Но когда я пытаюсь сделать то же самое с php, «SoapClient» получает «Не удалось подключиться к хосту». Я использую следующие варианты мыла

$soapclient_options = array();
$soapclient_options['cache_wsdl'] = 'WSDL_CACHE_NONE';
$soapclient_options['local_cert'] = $certificatePath;
$soapclient_options['passphrase'] = $api_certificate_passphrase;
$soapclient_options['trace'] = true;
$soapclient_options['connection_timeout'] = 15;
$soapclient_options['ssl_method'] = 'SOAP_SSL_METHOD_SSLv3';
$soapclient_options['location'] = 'api location';

$client = new SoapClient($wsdl_path, $soapclient_options);
$client->__setLocation($soapclient_options['location']);

Я делаю что-то не так? Кто-нибудь, пожалуйста, предложите мне и большое спасибо заранее.


Ответы:


1

Клиент PHP Soap принимает только сертификаты pem. Вы можете скрыть свой сертификат, используя:

openssl pkcs12 -in in.p12 -out out.pem -nodes -clcerts
03.03.2015
  • Спасибо, Грег, я где-то нашел то же самое и работал на меня. 16.03.2015
  • Можете ли вы отметить мой ответ как правильный для дальнейшего использования. Спасибо. 16.03.2015
  • Ох! я забыл, я новичок здесь. 16.03.2015

  • 2

    Дополнительный код, необходимый для работы с версией PHP 5.6.

    $soapclient_options['stream_context'] = stream_context_create(
                array(
                    'ssl' => array(
                        'verify_peer' => false,
                        'verify_peer_name' => false,
                    )
                )
        );
    
    22.04.2016
  • Пожалуйста, не делай этого! Это сделает ваше соединение менее безопасным и уязвимым для атак «человек посередине»! Это заставляет вашего клиента принимать ЛЮБОЙ сертификат, а не только ваш! 17.12.2016
  • Это связано с тем, что ваш сертификат, вероятно, является самоподписанным и не проверен каким-либо глобальным органом (центром сертификации). Правильное решение - иметь сертификат сервера и доверять только этому одному сертификату. Подробнее здесь (пример для curl, НО он также отлично работает для всех потоков — file_get_contents, soap и т. д.): unitstep.net/blog/2009/05/05/ 17.12.2016
  • Спасибо @Greg, я не использую это решение. Я уже перешел на другую систему аутентификации. 19.12.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..