Я создал страницу php, которая обращается к стороннему API через URL. Моя php-страница работает на локальном сервере под управлением apache. Стороннему API требуется сертификат и имя пользователя / пароль, которые привязаны к сертификату. Вызовы API работают, если я устанавливаю сертификат на свой локальный веб-сервер, устанавливаю параметры curl для указания на локально установленный сертификат и использую учетные данные пользователя для сертификата (они указаны в URL).
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL, $url);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,2);
curl_setopt($curl, CURLOPT_CAINFO, $certname);
curl_setopt($curl,CURLOPT_SSLCERT, $certname);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
$results = curl_exec ($curl);
curl_close ($curl);
Моя проблема в том, что на клиентских компьютерах есть много внутренних пользователей, каждый из которых имеет собственный сертификат для этого API. Я не уверен, как «пропустить» сертификат из браузера пользователя на мою страницу php, а затем использовать его в настройках curl.
Можно ли передать клиентские сертификаты, установленные на клиентских компьютерах, стороннему API? Если да, можете ли вы указать мне правильное направление?
Есть лучший способ сделать это?
Задача ещё не решена.
Других решений пока нет …