Включение поддержки SSL для CURL в XAMPP

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

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

причина, по которой я ищу обновление/поддержку, заключается в том, что я получаю следующую ошибку, которая при googled up и т. д. Я понимаю, что 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.8 l 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_authz_default mod_authn_file mod_authz_groupfile mod_authz_host mod_authz_user mod_cgi mod_dav mod_dav_fs mod_dav_lock mod_dir mod_env mod_include mod_headers и mod_info mod_isapi mod_log_config mod_mime mod_negotiation и mod_rewrite mod_setenvif расширением mod_ssl mod_status к модулю mod_vhost_alias mod_autoindex_color mod_php5 него mod_apreq2
SERVER_SIGNATURE Apache / 2.2.14 (Для Win32) в DAV/2 расширением mod_ssl/2.2.14 OpenSSL / 0.9.8 l 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.8 l mod_autoindex_color PHP / 5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl / v5.10.1

3 ответов


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

вы можете выбрать и выбрать root CAs, если вы берете этот путь, но если вы просто защищаете передачи между двумя из ваших собственные машины вам нужно только установить 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 для успешного подключения. Есть бесплатные CAs там, если вам только нужно получите подпись или вы можете настроить свой собственный CA (по моему опыту, в десять раз легче получить его подписанным кем-то, кто уже настроен для этого). Если на другом сервере размещен безопасный сайт, который имеет дело с" реальным миром " (деньги, продукты, личная информация и т. д.), его сертификат должен быть или вы должны получить его подпись доверенным ЦС в любом случае (VISA, Equifax, Comodo, вы можете найти список доверенных корневых ЦС в каждом браузере).

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


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

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

перед вызовом:

 curl_exec():

в файле php.

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


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

путь для CA.pl сценарий /usr/lib/ssl/misc/CA.pl

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

$ CA.pl -newca

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

$ CA.pl -newreq

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

$ CA.pl -sign