Подтвердить что ты не робот

Как отправить запрос curl с сертификатом pem через PHP?

У меня есть PHP скрипт на моем сервере Apache, которому необходимо отправить запрос на завивание на сервер-партнер. Партнер дайте мне файл .pem, который я должен подключить к каждому звонку, который я делаю, к его api.

Мой php script следующий:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSLCERT, "test.pem" );
curl_setopt($ch,CURLOPT_SSLCERTTYPE,"PEM");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);
curl_setopt($ch, CURLOPT_POST, True);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_VERBOSE, true);

$result = curl_exec($ch);

if(!$result)
{
    echo "Curl Error: " . curl_error($ch);
}
else
{
    echo "Success: ". $result;
}

curl_close($ch);

Он возвращает:

Ошибка Curl: невозможно установить файл закрытого ключа: тип test.pem PEM

Учтите, что он отправляет мне файл .pem и говорит "у него нет кодовой фразы"

4b9b3361

Ответ 1

Я думаю, что вам нужно использовать tmpfile() и stream_get_meta_data.

$pemFile = tmpfile();
fwrite($pemFile, "test.pem");//the path for the pem file
$tempPemPath = stream_get_meta_data($pemFile);
$tempPemPath = $tempPemPath['uri'];
curl_setopt($ch, CURLOPT_SSLCERT, $tempPemPath); 

Источник: Этот ответ здесь в SO помогает мне с аналогичной проблемой.