Настройка SSL на локальном сервере xampp/apache
Я пытаюсь получить доступ к активному каталогу с моего локального веб-сервера. Для этого я использую последнюю версию xampp и PHP-скрипт под названием adldap. Если я все правильно понимаю, мне нужно включить SSL для доступа к URL-адресам https. Я пытался найти его в Google, но безуспешно: (Может ли кто-нибудь связать учебник или объяснить мне, как установить SSL на xampp/apache для Windows 7 64bit? Любая помощь будет признательна:)
6 answers
Часть Apache - позволяет открывать https://localhost/xyz
Существует конфигурационный файл xampp/apache/conf/extra/httpd-ssl.conf, который содержит всю конкретную конфигурацию ssl. Это довольно хорошо документировано, поэтому ознакомьтесь с комментариями и взгляните на http://httpd.apache.org/docs/2.2/ssl /.
Файлы начинаются с <IfModule ssl_module>
, поэтому это имеет эффект только в том случае, если apache был запущен с его модулем mod_ssl.
Откройте файл xampp/apache/conf/httpd.conf в редактор и поиск строки
#LoadModule ssl_module modules/mod_ssl.so
Удалите хэш-метку, сохраните файл и повторно запустите apache. Теперь веб-сервер должен начинаться с базовой/стандартной конфигурации ssl xampp; достаточно хорошо для тестирования, но вы можете прочитать немного больше о mod_ssl в документации apache.
Часть PHP - позволяет adldap использовать ldap через ssl
Adldap нуждается в расширении openssl php для использования соединений "ldap через ssl". Расширение openssl поставляется в виде библиотеки dll с ксампп. Вы должны "сказать" php, чтобы загрузить эту dll, например, указав extension=nameofmodule.dll
в вашем php.ini
Выполнить
echo 'ini: ', get_cfg_var('cfg_file_path');
Он должен показать вам, какой ini-файл использует ваша установка php (может отличаться между php-apache-модулем и версией php-cli).
Откройте этот файл в редакторе и найдите
;extension=php_openssl.dll
Удалите точку с запятой, сохраните файл и повторно запустите apache.
Оказывается, что OpenSSL скомпилирован и включен в php 5.3 XAMPP 1.7.2 и поэтому больше не требует отдельной библиотеки dll расширения.
Однако вам ВСЕ равно нужно включить его в вашем файле PHP.ini в строке extension=php_openssl.dll
Я сделал большую часть предложенных здесь вещей, но все равно ничего не вышло. Попробовал это, и это сработало: Откройте панель управления XAMPP, найдите кнопку Config для модуля Apache. Нажмите на кнопку Config и выберите PHP (php.ini). Откройте в любом текстовом редакторе и удалите полуколонну перед php_openssl. Сохраните и перезапустите Apache. Этого должно хватить!
Вы можете включить SSL в XAMPP, создав самозаверяющие сертификаты, а затем установив эти сертификаты. Введите следующие команды для создания и перемещения сертификатов в папки ssl.
Сервер Openssl genrsa -des3-out.ключ 1024
Openssl req - сервер новых ключей.сервер выдачи ключей.csr
Сервер Cp.ключ server.key.org
Openssl rsa-в server.key.org - сервер отключен.ключ
Openssl x509 -req -365 дней на сервере.csr -ключ для входа сервер.сервер вывода ключа.crt
Сервер Cp.crt/opt/lampp/etc/ssl.crt/доменное имя.crt
Сервер Cp.ключ/opt/lampp/etc/ssl.ключ/имя домена.ключ
(Используйте sudo с каждой командой, если вы не являетесь суперпользователем)
Теперь проверьте, включен ли mod_ssl в [XAMPP_HOME]/etc/httpd.conf:
Модуль загрузки ssl_module модули/mod_ssl.so
Добавьте виртуальный хост, в этом примере"localhost.domainname.com "путем редактирования [XAMPP_HOME]/etc/extra/httpd-ssl.conf следующим образом:
<virtualhost 127.0.1.4:443>
ServerName localhost.domainname.com
ServerAlias localhost.domainname.com *.localhost.domainname.com
ServerAdmin admin@localhost
DocumentRoot "/opt/lampp/htdocs/"
DirectoryIndex index.php
ErrorLog /opt/lampp/logs/domainname.local.error.log
CustomLog /opt/lampp/logs/domainname.local.access.log combined
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /opt/lampp/etc/ssl.crt/domainname.crt
SSLCertificateKeyFile /opt/lampp/etc/ssl.key/domainname.key
<directory /opt/lampp/htdocs/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</directory>
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
</virtualhost>
Добавьте следующую запись в /etc/hosts:
127.0.1.4 localhost.domainname.com
Теперь попробуйте установить сертификат/попробуйте импортировать сертификат в браузер. Я проверил это, и это сработало в Ubuntu.
Я просмотрел все ответы и учебные пособия по Интернету, но вот основные шаги для включения SSL (https) на локальном хосте с XAMPP:
Требуется:
-
Выполнить ->"C:\xampp\apache\makecert.bat " (дважды щелкните на Windows) Заполните пароли по вашему выбору, нажмите Enter для всего, КРОМЕ определения "localhost"!!! Будьте осторожны, когда вас спрашивают здесь:
Общее имя (например, полное доменное имя сервера или ВАШЕ имя) []:локальный хост
(Сертификаты выдаются только для зоны доменных имен!)
- Перезапустить apache
- Chrome - > Настройки -> Поиск "Сертификат" - > Управление сертификатами - > Доверенные корневые центры сертификации -> Импорт ->"C:\xampp\apache\conf\ssl.crt\server.crt " -> Должен спросить "ДА" для подтверждения!
- https://localhost/testssl.php -> [Хорошо, Теперь Зеленый!] (любой тестовый файл html)
Необязательно: (если вышеизложенное не работает, сделайте больше эти шаги)
- Запустите XAMPP От Имени администратора (Пуск -> XAMPP -> щелкните правой кнопкой мыши -> Запуск от Имени Администратора)
-
XAMPP ->Apache ->Конфигурация ->httpd.conf ("C:\xampp\apache\conf\httpd.conf ")
Модуль загрузки ssl_module модули/mod_ssl.so (удалить # в начале строки)
-
XAMPP ->Apache ->Конфигурация ->php.ini ("C:\xampp\php\php.ini ")
Extension=php_openssl.dll (удалить; с начала строки)
Перезапустите apache и хром!
Проверьте наличие проблем или статус вашего сертификата:
Chrome ->F12 ->Безопасность -> Просмотр сертификата
Я сделал все предложенные здесь вещи, и мой код все еще не работал, потому что я использовал curl
Если вы используете curl
в файле php, curl, похоже, по умолчанию отклоняет весь ssl-трафик. Быстрое решение, которое сработало для меня, состояло в том, чтобы добавить:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Перед вызовом:
curl_exec():
В файле php.
Я считаю, что это отключает всю проверку SSL-сертификатов.