Включение поддержки SSL для CURL в XAMPP - PullRequest
8 голосов
/ 09 декабря 2010

Я использую закодированный скрипт PHP, для которого требуется поддержка SSL для CURL.

В настоящее время я использую XAMPP для локальной разработки, и мне нужно знать, как обновить CURL по умолчанию, чтобы для него был включен SSL.

Причина, по которой я ищу обновление / поддержку, заключается в том, что я получаю следующую ошибку, которая при поиске в Google и т. Д. Я понимаю, что SSL не поддерживается для CURL на моей машине.

SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

У кого-нибудь есть рекомендации для меня, пожалуйста? Моя текущая конфигурация локального сервера:

XAMPP 1.7.3 поддержка cURL включена
Информация о cURL 7.19.6
Версия Apache Apache / 2.2.14 (Win32) DAV / 2 mod_ssl / 2.2.14 OpenSSL / 0.9.8l mod_autoindex_color PHP / 5.3.1 mod_apreq2-20090110 / 2.7.1 mod_perl / 2.0.4 Perl / v5.10.1
загруженные модули core mod_win32 mpm_winnt http_core mod_so mod_actions mod_alias mod_asis mod_auth_basic mod_auth_digest mod_authn_default mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_cgi mod_dav mod_dav_fs mod_dav_lock mod_dir mod_env mod_headers mod_include mod_info mod_isapi mod_log_config mod_mime переговоры по mod_rewrite mod_setenvif mod_ssl mod_status mod_vhost_alias mod_autoindex_color mod_php5 mod_perl mod_apreq2
SERVER_SIGNATURE Apache / 2.2.14 (Win32) DAV / 2 mod_ssl / 2.2.14 OpenSSL / 0.9.8l mod_autoindex_color PHP / 5.3.1 mod_apreq2-20090110 / 2.7.1 mod_perl / 2.0.4 Perl / v5.10.1 Сервер в Порт localhost 80
SERVER_SOFTWARE Apache / 2.2.14 (Win32) DAV / 2 mod_ssl / 2.2.14 OpenSSL / 0.9.8l mod_autoindex_color PHP / 5.3.1 mod_apreq2-20090110 / 2.7.1 mod_perl / 2.0.4 Perl / v5.10.1

Ответы [ 3 ]

10 голосов
/ 09 декабря 2010

Не поддерживается на вашем компьютере? Отправленная вами ошибка означает, что CURL не смог проверить сертификат SSL для удаленного сервера и не обязательно указывает на конкретную неадекватность вашей машины. В моем предыдущем опыте работы с CURL по умолчанию он не принимал / не доверял никаким сертификатам. В зависимости от вашей настройки и того, что вы планируете с ней делать, вы можете доверять одному самоподписанному сертификату [[Невозможно проверить самоподписанные сертификаты!]] (например, с другого компьютера вы запускаете) или вы можете захотеть доверять настоящему Центру сертификации (который позволит проверять любые сертификаты, подписанные этим ЦС). Это руководство довольно простое, если вы знакомы с тем, как изменить настройки CURL: http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

Вы можете выбрать корневые ЦС, если выберете этот путь, но если вы просто защищаете передачу между двумя своими машинами, вам нужно только настроить CURL для доверия сертификату другого компьютера.

С другой стороны, если у вас действительно есть более глубокая проблема с SSL, это могло произойти из-за любого количества вещей, таких как сборка без поддержки SSL. Если вы создаете, настраиваете и компилируете свою собственную сборку CURL, вы можете взглянуть на http://curl.haxx.se/docs/faq.html по темам, касающимся SSL, включая

http://curl.haxx.se/docs/sslcerts.html и http://curl.haxx.se/docs/faq.html#What_certificates_do_I_need_when

Обратите внимание на последнюю ссылку (FAQ), что самоподписанные сертификаты НЕ МОГУТ быть проверены. Если вы подключаетесь к другому из ваших собственных серверов, его сертификат должен быть подписан ЦС и сертификат ЦС, которому доверяет CURL, для успешного подключения. Существуют бесплатные центры сертификации, если вам нужно только получить подпись или вы можете создать свой собственный центр сертификации (по моему опыту, подписать его подписчик уже в десять раз проще). Если на другом сервере размещен защищенный сайт, который имеет дело с «реальным миром» (деньги, продукты, личная информация и т. Д.), Его сертификат должен быть или вы должны в любом случае подписать его доверенным центром сертификации (VISA, Equifax, Comodo, список доверенных корневых центров сертификации можно найти в каждом браузере).

Я рассказал о том, что я могу в ответ на эту ошибку, но если ничего из этого не поможет, может помочь немного больше информации о вашей настройке и системе. :)

8 голосов
/ 12 мая 2012

Очень простое исправление, которое сработало для меня, - это позвонить:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

перед звонком:

 curl_exec():

в файле php.

Я считаю, что это отключает все проверки SSL-сертификатов.

0 голосов
/ 09 декабря 2010

вы должны подписать свой открытый ключ центром сертификации (есть какой-то сценарий, который может сделать это за вас), или вы можете отправить свой запрос на знак сертификации и подписать его, используя собственный созданный центр сертификации или какой-либо бесплатный центр сертификации. ....

путь для скрипта CA.pl /usr/lib/ssl/misc/CA.pl

эта команда создаст центр сертификации, который необходимо подписать ключ вашего сервера открытый ключ этого CA также должен быть включен в файл CA_file

$ CA.pl -newca

создает закрытый ключ для сервера и запрос на сертификацию

$ CA.pl -newreq

создает сертификат сервера из личного ключа и запроса (включая закрытый ключ CA)

$ CA.pl -sign
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...