Intereting Posts
spl_object_hash, объекты не идентичны Как автоматически изменить размер ячейки в fpdf, используя php Как очистить содержимое веб-сайта (* COMPLEX * iframe, javascript-представление) Фильтровать сообщения WordPress по расстоянию между координатами PHP: Может ли CURL следовать мета-перенаправлению? Проверьте ошибки запроса codeigniter вместо того, чтобы показывать их пользователю Группы опций в форме формы объекта symfony2 Сократить заголовок до ближайшего слова Paypal IPN: что, если покупатель не щелкнул ссылку возврата после оплаты? Нет привязок вокруг одной строки, если в NetBeans Как добавить поддержку MySQL для PHP с помощью MacPorts? Можно ли загружать изображение на сервер с помощью диалогового окна «Модальное окно» Bootstrap, jQuery, AJAX и PHP? Если да, то как? Если нет, в чем причина? Попытка вызова функции из пространства имен symfony Controller Форма электронной почты PHP отправляет электронную почту каждую страницу обновляется Попытка json_encode в PHP

Как использовать самоподписанный сертификат с XAMPP для запросов HTTPS с использованием cURL?

Я установил XAMPP, и мне нужно протестировать некоторые HTTPS-запросы. Прежде всего, я попытался настроить XAMPP, чтобы использовать HTTPS-запросы.

Это то, что я сделал:

1) В файле php.ini я раскомментировал openssl module .

2) В файле httpd.conf я раскомментировал LoadModule ssl_module modules/mod_ssl.so

3) В файле httpd-ssl.conf я перенаправил

SSLCertificateFile "conf/ssl.crt/ipm.crt" и

SSLCertificateKeyFile "conf/ssl.key/ipm.key " в мои .crt и .key файлы.

4) Я помещаю файлы ipm.crt и ipm.key в ssl.crt apache ssl.crt и ssl.key внутри XAMPP.

5) Я создал свой собственный сертификат, выполнив:

 openssl req -config openssl.cnf -new -out ipm.csr -keyout ipm.pem openssl rsa -in ipm.pem -out ipm.key openssl x509 -in ipm.csr -out ipm.crt -req -signkey ipm.key -days 365 

Теперь я использую скрипт для отправки XML-файла. Я использую cURL, и мой код:

 <?php /* * XML Sender/Client. */ // Get our XML. You can declare it here or even load a file. $xml = file_get_contents("data.xml"); // We send XML via CURL using POST with a http header of text/xml. $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_CAINFO, getcwd().'/cert/ipm.crt'); curl_setopt($ch, CURLOPT_SSLCERT, getcwd().'/cert/ipm.pem'); curl_setopt($ch, CURLOPT_SSLCERTPASSWD,'password'); //I use this line only for debugging through fiddler. Must delete after done with debugging. curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888'); // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, "https://ipv4.fiddler/iPM/receiver.php"); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($ch, CURLOPT_REFERER, 'https://ipv4.fiddler/iPM/receiver.php'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $ch_result = curl_exec($ch); echo "Result = ".$ch_result; echo 'Curl error: ' . curl_error($ch); curl_close($ch); // Print CURL result. ?> 

Но я верну эту ошибку: Curl error: unable to use client certificate (no key found or wrong pass phrase?)

Однако, когда я создал свой сертификат, я поставил в качестве пароля фразу: password

Любые идеи по этому вопросу?

Я считаю, что вам также нужно указать CURLOPT_SSLKEYPASSWD :

 curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'password'); curl_setopt($ch, CURLOPT_SSLKEYPASSWD, 'password');