Проблемы PHP SOAP SSL - PullRequest
       10

Проблемы PHP SOAP SSL

0 голосов
/ 31 августа 2011

Я пытаюсь подключиться к безопасному серверу SOAP с помощью NuSOAP. (Я дал встроенной библиотеке SOAP шанс, но это странно себя ведет, поэтому я переключился на NuSOAP.)

Вот мой код:

<code>require('application/libraries/nusoap/nusoap.php');
$soap = new nusoap_client('https://ws.firstdataglobalgateway.com/fdggwsapi/services/order.wsdl', 'wsdl');
$soap->setCredentials('WS'.STORE_NUMBER.'._.1',
    PASSWORD,
    'certificate',
    array(
        'sslcertfile' => 'first_data/cert.pem',
        'sslkeyfile' => 'first_data/key.pem',
        'passphrase' => KEY_PASSPHRASE
    )
);
if($err = $soap->getError()) {
    die('Error: '.$err);
}
$result = $soap->call('fdggwsapi:FDGGWSApiOrderRequest', array('v1:Transaction' => '1'));
if($soap->fault) {
    echo 'Fault! <pre>';
    var_dump($result);
    echo '
'; } еще { if ($ err = $ soap-> getError ()) { die ('Ошибка:'. $ err); } еще { echo '
';
        var_dump($result);
        die('
'); } }

Я получаю следующую ошибку:

Error: wsdl error: Getting https://ws.firstdataglobalgateway.com/fdggwsapi/services/order.wsdl - HTTP ERROR: cURL ERROR: 56: SSL read: error:1409441B:SSL routines:SSL3_READ_BYTES:tlsv1 alert decrypt error, errno 0
url: https://ws.firstdataglobalgateway.com:443/fdggwsapi/services/order.wsdl
content_type: 
http_code: 0
header_size: 0
request_size: 163
filetime: -1
ssl_verify_result: 0
redirect_count: 0
total_time: 0.531131
namelookup_time: 0.00121
connect_time: 0.070608
pretransfer_time: 0.305044
size_upload: 0
size_download: 0
speed_download: 0
speed_upload: 0
download_content_length: -1
upload_content_length: 0
starttransfer_time: 0
redirect_time: 0

Какие могут быть возможные проблемы? Как я мог отладить это? Я здесь не в своей лиге.

Ответы [ 2 ]

0 голосов
/ 20 января 2015

С этими настройками мой клиент наконец-то работает

$client = new nusoap_client($wsdlurl,'wdsl');
$client->setUseCURL(true);
$client->useHTTPPersistentConnection();
$client->setCurlOption(CURLOPT_SSL_VERIFYHOST, 0);
$client->setCurlOption(CURLOPT_SSL_VERIFYPEER, 0);
$client->setCurlOption(CURLOPT_RETURNTRANSFER, 1);
$client->setCurlOption(CURLOPT_SSLVERSION,3);
0 голосов
/ 31 августа 2011

На основании ошибки:

SSL read: error:1409441B:SSL routines:SSL3_READ_BYTES:tlsv1 alert 
decrypt error, errno 0

Мне кажется, что у библиотеки PHP проблемы с чтением ваших файлов cert.pem и key.pem. Эти файлы могут быть разных форматов. Apache требует, чтобы они были в формате PKCS12, и я бы предположил, что PHP такой же. Вы можете использовать инструмент под названием «Keystore Explorer 4.0.1» для проверки и преобразования при необходимости.

Вы также можете проверить правильность формата ключей, используя openssl и следующую команду:

C:\Temp> openssl pkcs12 -info -in ksb_cert.p12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...