Включение поддержки 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