Авторизация на вебсервисе с помощью сертификата SSL

АлексНик

Новичок
Для авторизации на вебсервисе предлагается отправить POST запрос следующего формата.

POST /Authenticate HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: DiadocAuth ddauth_api_client_id=testClient
Content-Length: 1252
Connection: Keep-Alive
<Двоичное DER-представление X.509-сертификата пользователя>


Вопрос возникает с отправкой Двоичного DER-представления X.509-сертификата пользователя
Имеется файл этого самого DER-представление X.509-сертификата пользователя.
Каким образом его можно отправить в POST запрос
 

ksnk

прохожий
В смысле - как отправить непойми что на сервер постом ? Легко - гуглится по словам `php post send raw data`. Например - так https://stackoverflow.com/questions/871431/raw-post-using-curl-in-php
Есть в курле забавная фича - файлы можно сопровождать символом @, так что результат может выглядеть примерно так
PHP:
$url='https://diadoc-api.kontur.ru/Authenticate';
$certfile=realpath('cert.bin');

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,            $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST,           1 );
curl_setopt($ch, CURLOPT_POSTFIELDS,     "@".$certfile );
curl_setopt($ch, CURLOPT_HTTPHEADER,     array('Content-Length: '.filesize($certfile)));

$result=curl_exec ($ch);
 

АлексНик

Новичок
Спасибо за ответ. В этом варианте если добавить заголовки
curl_setopt($ch,CURLOPT_HTTPHEADER,['Connection: Keep-Alive','Authorization: DiadocAuth ddauth_api_client_id=test']);
всё работает.
 
Сверху