JKS-файл с паролем для доступа к API Финансового института

Я получил файл JKS, зашифрованный паролем, из финансового учреждения. API использует порт 444. Когда я использую файл JKS и пароль с SoapUI («Настройки» -> «Настройки SSL» -> «KeyStore [File] + KeyStore Password»), я могу отправлять и получать XML-запросы и ответы. Без JSK-файла и пароля, если я пытаюсь получить доступ к URL-адресу, браузер не загружает страницу API.

После установки файла и предоставления пароля браузеру (Firefox -> Параметры -> Дополнительно -> Просмотреть сертификат -> Импорт); результат страницы показывает Неправильный запрос »[формат XML] (Это может получить доступ к странице с сертификатом).

Я преобразовал файл в P12 / PEM (используя: keytool -importkeystore -srckeystore keystore.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore keystore.p12) — и он работает так же, как и выше (как для SoupUI, так и для браузера).

Теперь мне нравится использовать этот файл (JKS / PEM) в моем коде PHP на сервере разработки IIS и сервере Apache-Production. Во время исполнения я получаю: Ошибка: проблема с сертификатом SSL: невозможно получить сертификат локального эмитента.

Примечание: тот же файл JKS с тем же паролем используется другим поставщиком, и среда Python работает нормально.

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

Спасибо.

-1

Решение

Сначала необходимо преобразовать файл JKS в PEM, который может быть использован вашим кодом PHP.

Тогда это должно сделать:

$options = array(
CURLOPT_RETURNTRANSFER  => true,          // return web page
CURLOPT_PORT            => <Port#>,           //Post
CURLOPT_CAPATH          => $ca_path,      //CA Path ***and not filename
CURLOPT_CAINFO          => $cert_file,    //Certificate File
CURLOPT_SSLCERT         => $key_file,     //SSL file
CURLOPT_SSLKEYPASSWD    => $key_password, //Public Key
CURLOPT_HTTPHEADER      => $aHeaders,     //Header
CURLOPT_POST            => 1,            //Send POST
CURLOPT_POSTFIELDS      => $xml,         //To Fetch Data
CURLINFO_HEADER_OUT     => $properties,  //Application's Username and password
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);

$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
0

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

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

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