wsdl — Как подключить внешний сервер через файл pem и переполнение стека

У меня есть файл .jks, и я хочу подключить один из банковских серверов с моего сайта с помощью этого файла jks.

Сначала я преобразовал этот файл .jks в pkcs с помощью этой команды

keytool -importkeystore -srckeystore client.jks -destkeystore client.pkcs -srcstoretype JKS -deststoretype PKCS12

Затем преобразуйте файл pkcs в файл pem, используя эту команду openssl pkcs12 -in client.pkcs -out client.pem

Затем я использую этот код PHP для подключения

<?php

try{
$url = "https://b2brbtest.riyadbank.com/soap?service=RB_OLP_INITIATE_PAYMENT";
$certFile =  dirname(__FILE__)."/client.pem";
$certPass = "xxxxx";
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_PORT, 443);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($ch, CURLOPT_SSLCERT, $certFile);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $certPass);

$headers = array();
array_push($headers, "Content-Type: text/xml; charset=utf-8");
array_push($headers, "SOAPAction: sii:RB_OLP_INITIATE_PAYMENT");
array_push($headers, "Host:b2brbtest.riyadbank.com");

if($xml != null) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
array_push($headers, "Content-Length: " . strlen($xml));
}

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
print curl_error($ch);
curl_close($ch);

print_r($response);
}  catch (Exception $e){
echo $e->getMessage();
}
?>

Это возвращает эту ошибку
ВЫХОД

Неизвестная ошибка протокола SSL при подключении к b2brbtest.riyadbank.com:443

Я использую Wireshark для отслеживания сети.

я пытаюсь этот же код PHP с моего локального хоста, его достичь IP-адрес назначения и показывает эту ошибку
ВЫХОД

«Не удалось подключиться к порту 443 b2brbtest.riyadbank.com: истекло время ожидания».

Но когда я пытаюсь этот же код с моего сайта, я получаю эту ошибку
ВЫХОД

«Ошибка протокола SSL при подключении к b2brbtest.riyadbank.com:443».

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

Я получил ссылку отсюда PHP: результат Curl https xml возвращает пустое значение но не работает

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]