Аутентификации по Сертификатам открытых ключей

Статус
В этой теме нельзя размещать новые ответы.

smertnik

Постоялец
Регистрация
5 Июн 2006
Сообщения
68
Реакции
30
Всем привет. Помогите решить задачу аутентификации по Сертификатам открытых ключей.

Данные которые есть:
Коммуникационные соединения через сеть интернет защищаются с помощью криптографического протокола TLS версии не ниже 1.0 c использованием аутентификации по Сертификатам открытых ключей.
При соединении по протоколу TLS разрешены только следующие стойкие криптографические алгоритмы.

Ассиметричное шифрование: алгоритм RSA с минимальной длиной ключа 2048 бит.
Обмен ключами: алгоритм Диффи-Хеллмана (англ. Diffie-Hellman, DH).
Цифровая подпись: алгоритм DSA.
Симметричное шифрование: алгоритмы TripleDES, AES128, AES256 с режимом шифрования CBC (англ. Cipher Block Chaining).
Получение хэш-функций: алгоритмы SHA-1, SHA-2.
При соединении Платёжный шлюз проверяет сертификат и разрешенные криптографические параметры.
Прикладные данные, обслуживающие запросы, передаются между Платёжным шлюзом и ИС ТСП в виде XML-сообщений по протоколу HTTP (сontent-type: text/xml) методом POST.
Передаваемые данные имеют кодировку UTF-8.

Что вышло сделать:

Код:
$fOut = fopen($_SERVER["DOCUMENT_ROOT"].'/keys/curl_out.txt', "w");
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml", "Accept: text/xml"));
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 GTB6");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

curl_setopt($ch, CURLOPT_SSLCERT, $_SERVER["DOCUMENT_ROOT"].'/keys/pubkey.pem');
curl_setopt($ch, CURLOPT_SSLKEY, $_SERVER["DOCUMENT_ROOT"].'/keys/webshop_key.pem');
curl_setopt($ch, CURLOPT_CAINFO, $_SERVER["DOCUMENT_ROOT"].'/keys/Bank-all-CA.pem');

curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_STDERR, $fOut);

$output = curl_exec($ch);
if(!$output)
{
    echo "Curl Error : " . curl_error($ch);
}
else
{
    $info = curl_getinfo($ch);
    echo '<pre>'.print_r($info, true).'</pre>';
    echo htmlentities($output);
}

Проверка ключа платежного шлюза проходит (CURLOPT_SSL_VERIFYHOST, CURLOPT_SSL_VERIFYPEER) - это обязательное условие. А с моей стороны сертификат не передается для аутентификации, куда дальше копать уже не знаю. Прошу помочь или натолкнуть на мысль, что тут не хватает?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху