Ответ 1
Как настроить WAMPServer для использования протокола HTTPS SSL
* Это не тривиальный процесс. Этот урок, надеюсь, заставит работать SSL для вас. Однако, если он настроен правильно, когда он работает, ПОЛНОСТЬЮ ДОЛЖЕН ВАС.
Дополнительное чтение для всех, кто путешествует по этой дороге
Хорошо,
Я основал этот учебник по созданию сайта под названием www.wamphelpers.dev Итак, если вы видите, что это имя меняет его на имя сайта, которое вы пытаетесь защитить.
Я начал с создания незащищенного сайта в \wamp\www\wamphelpers
добавлен виртуальный хост для этого сайта, в \wamp\bin\apache\apache{version}\conf\extra\httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
AllowOverride All
Require local
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/wamphelpers"
ServerName wamphelpers.dev
ServerAlias www.wamphelpers.dev
<Directory "c:/wamp/www/wamphelpers">
AllowOverride All
Require local
</Directory>
</VirtualHost>
Добавлено его доменное имя в C:\windows\system32\drivers\etc\hosts
Некоторые антивирусные проверки блокируют доступ к файлу HOSTS, поэтому вам может потребоваться отключить проверку вашего вируса или настроить его на временное блокирование файла hosts.
127.0.0.1 wamphelpers.dev www.wamphelpers.dev
::1 wamphelpers.dev www.wamphelpers.dev
Теперь перезапустите dnscache следующим образом из окон команд, запущенных с использованием команды "Запуск от имени администратора"
net stop dnscache
net start dnscache
Затем был создан простой script в \wamp\www\wamphelpers\index.php
<?php
echo 'Hello, this is the WAMPHELPERS.DEV site homepage';
?>
Теперь, чтобы активировать новые виртуальные хосты, которые вы определили, отредактируйте \wamp\bin\apache\apache{version}\conf\httpd.conf
и найдите эту строку
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
и удалите символ комментария #
так
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
Сохраните файл.
Теперь перезапустите Apache и убедитесь, что ваш простой незащищенный сайт с виртуальной хостингом работает , прежде чем продолжить.
Инструментарий openssl. Файлы openssl.exe, ssleay32.dll и libeay32.dll входят и находятся в папке C:\wamp\bin\apache\apachex.y.z\bin Это должно быть все, что вам нужно, чтобы создать свой собственный сертификат!
ОДНАКО: Это не работало для меня ни на одной из версий Apache, которые я установил. Я всегда получал это сообщение об ошибке.
Если порядковый номер изменился в зависимости от папки версии apache, в которой я находился.
Если вы получите эту ошибку, не беспокойтесь, это то, что вам нужно сделать.
установите последнюю версию OPENSSL TOOLKIT
Это можно получить здесь
ПРИМЕЧАНИЕ.. Пока не используйте версию V1.1, команда PHP еще не скомпилировала PHP с этими новыми связями, поэтому придерживайтесь версии V1.0.? версии до тех пор, пока они не сделают.
Выберите последнюю версию "Win32 OpenSSLv xxx Light" или "Win64 OpenSSLv xxx Light" в соответствии с вашей установленной версией WAMPServer, так как это все, что вам нужно.
Это загрузит файл .exe, который вы можете запустить для установки этого инструментария.
Он задаст следующий вопрос: я предлагаю вам ответить на него так, чтобы вы не установили что-то в C:\windows\system32. После этого это набор инструментов, и он изменяется достаточно часто. Лучше всего хранить эти вещи отдельно, а не делать их системными.
Как только это будет установлено (в зависимости от того, какая папка указана в установке), вы должны быть готовы начать процесс создания ключей и сертификатов!
Создать ключи и сертификаты.
ШАГ 1: Создание секретного ключа RSA
Сначала нам нужно создать сертификат. Обычный (оплаченный) процесс - это создать свой сертификат и передать его в орган подписи. Вот почему это стоит денег, как они должны сделать, должной добросовестности, чтобы проверить, что вы тот, кем вы говорите, и этот сайт, на котором вы будете использовать сертификат, является реальным и законным.
Инструментарий openssl используется для создания секретного ключа RSA и CSR (запроса подписи сертификата), который будет использоваться для нашего сертификата. Первым шагом будет создание вашего закрытого ключа RSA. Этот ключ является 1024-битным RSA-ключом, который зашифровывается с использованием Triple-DES и сохраняется в формате PEM, так что он читается как текст ASCII.
Откройте окно командной строки (поле Dos), используя [b] Запуск от имени администратора [/b] Измените каталог, где вы установили OpenSSL Toolkit выше. В моем случае это
CD c:\apps\OpenSSL-Win32\bin
Создайте папку для вывода, который должен быть помещен (чтобы сохранить порядок в папке bin) Я использовал веб-сайт
md website
Теперь введите следующую команду:
openssl genrsa -out website\server.key 2048
Это должно было создать файл в папке веб-сайта с именем server.key, без ключа фразы доступа, проверить его существование.
Шаг 2: Создайте CSR (запрос подписи сертификата)
Во время генерации CSR вам будет предложено несколько фрагментов информации.
Это атрибуты сертификата X.509.
Одно из приглашений будет для "Common Name" (например, FQDN сервера или вашего имени) []: ".
Важно, чтобы это поле заполнялось полным доменным именем сервера, который должен быть защищен SSL.
Поэтому, если защищаемый веб-сайт будет https://www.wamphelpers.dev
, введите www.wampheplers.dev
в это приглашение. Я использовал wamphelper.dev
, так как мой ServerName
равен ServerName wamphelpers.dev
Не вводите ничего на вопрос: Пароль с запросом []:] Просто нажмите Enter. Если вы вводите ключевую фразу здесь, когда приходите на запуск Apache с установленным SSL, Apache не запускается и будет выдавать это сообщение об ошибке: -
[error] Init: встроенный SSLPassPhraseDialog не поддерживается на Win32
В принципе, если вы вводите парольную фразу, Apache должен бросить вам вызов для этой ключевой фразы каждый раз, когда она начнется. Это, очевидно, не облегчит вашу жизнь, но прежде всего на окнах, на которых она фактически не работает и будет вызывают сбои Apache, когда он пытается запросить кодовую фразу, с указанной ошибкой.
Команда для генерации CSR выглядит следующим образом:
openssl req -new -key website\server.key -out website\server.csr
Example question and answers:
Country Name (2 letter code) [AU]:GB
State or Province Name (full name) [Some-State]: Hampshire
Locality Name (eg, city) []: Portsmouth
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Wamp Helpers Ltd
Organizational Unit Name (eg, section) []: Information Technology
Common Name (e.g. server FQDN or YOUR name) []: wamphelpers.dev
Email Address []: [email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ( leave blank just hit the enter key )
An optional company name []: ( leave blank just hit the enter key )
Шаг 3: Создание самоподписанного сертификата
На этом этапе вам нужно будет создать самозаверяющий сертификат, потому что вы либо не планируете иметь сертификат, подписанный ЦС, либо вы хотите проверить вашей новой реализации SSL, пока CA подписывает ваш сертификат.
ПРЕДВАРИТЕЛЬНОЕ ПРЕДУПРЕЖДЕНИЕ Этот сертификат генерирует ошибку в браузере клиента, что подписание центра сертификации неизвестно и не доверено. Это неизбежно, поскольку мы сами подписываем сертификат, но, конечно, сеть доверия не знает, кто мы. См. Пример в этом документе, в котором показано, как сообщить браузеру, что вы действительно доверяете этому сертификату
openssl x509 -req -days 365 -in website\server.csr -signkey website\server.key -out website\server.crt
Example output:
Loading 'screen' into random state - done
Signature ok
subject=/C=GB/ST=Hampshire/L=Portsmouth/O=WampHelpers Ltd/OU=Information Technology/CN=www.wamphelpers.dev/[email protected]
Getting Private key
Шаг 4: Установка закрытого ключа и сертификата
Создайте эти 2 каталога под версией Apache, которую вы используете.
md c:\wamp\bin\apache\apachex.y.z\conf\ssl.key
md c:\wamp\bin\apache\apachex.y.z\conf\ssl.crt
И скопируйте только что сгенерированный нами файл:
copy website\server.crt c:\wamp\bin\apache\apachex.y.z\conf\ssl.crt
copy website\server.key c:\wamp\bin\apache\apachex.y.z\conf\ssl.key
Шаг 5: настройте Apache для активации SSL
Отредактируйте httpd.conf, убедитесь, что эта строка раскомментирована
LoadModule authn_socache_module modules/mod_authn_socache.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Удалите комментарий '#' из этой строки также
Include conf/extra/httpd-ssl.conf
Затем переместите эту строку после этого блока... так
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
# Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf
Шаг 6: Настройте PHP для активации SSL
Отредактируйте свой php.ini(используйте меню wampmanager, чтобы вы отредактировали правильный)
Удалить комментарий ';' из этой строки
extension=php_openssl.dll
Шаг 7: Настройте безопасные сайты Виртуальный хост
Yup для всех вас, виртуальных хостов, не говорящих, теперь вы не можете избежать процесса.
Изменить \wamp\bin\apache\apachex.y.z\conf\extra\httpd-ssl.conf
Этот файл выпущен Apache и содержит определенное местоположение файла по умолчанию. Мы можем оставить большую часть этого файла, как есть, но нам нужно настроить виртуальный хост здесь, чтобы соответствовать нашему фактическому местоположению сайтов и нескольким другим вещам, поэтому:
найдите эти строки
DocumentRoot "c:/Apache2/htdocs"
ServerName www.example.com:443
ServerAdmin [email protected]
ErrorLog "c:/Apache2/logs/error.log"
TransferLog "c:/Apache2/logs/access.log"
и измените их на
DocumentRoot "c:/wamp/www/wamphelpers"
ServerName wamphelpers.dev:443
ErrorLog "c:/wamp/logs/ssl_error.log"
TransferLog "c:/wamp/logs/ssl_access.log"
Find
SSLCertificateFile "c:/Apache2/conf/server.crt"
и измените на
SSLCertificateFile "c:/wamp/bin/apache/apachex.y.x/conf/ssl.crt/server.crt"
Find
SSLCertificateKeyFile "c:/Apache2/conf/server.key"
и измените на
SSLCertificateKeyFile "c:/wamp/bin/apache/apachex.y.x/conf/ssl.key/server.key"
Find
<Directory "c:/Apache2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
и измените на
Синтаксис Apache 2.2
<Directory "c:/wamp/www/wamphelpers">
SSLOptions +StdEnvVars
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
</Directory>
Синтаксис Apache 2.4
<Directory "c:/wamp/www/wamphelpers">
SSLOptions +StdEnvVars
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require local
</Directory>
Find
SSLSessionCache "shmcb:c:/Apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
и измените его на
SSLSessionCache "shmcb:c:/wamp/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
Find
CustomLog "c:/Apache24/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
и измените на
CustomLog "c:/wamp/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
В основном просматривайте файл conf и любую команду, которая не закомментирована, но имеет ссылку на файл или папку следует изменить для ссылки на структуру папок WAMPServer, а не на "C:/Apache2...."
Теперь убедитесь, что все эти файлы, которые мы изменили, сохранены и перезапустите Apache, используя меню wampmanager.
Сначала проверьте, что незащищенный сайт все еще работает.
Затем попробуйте использовать свой новый защищенный сайт, добавив 'https://' в начало имени домена
т.е. https://www.wamphelpers.dev
без единичных кавычек, конечно.
Если Apache не перезапускает, вы, вероятно, что-то ошиблись. Проверьте конфигурацию следующим образом: -
Откройте окно командной строки
cd \wamp\bin\apache\apachex.y.z\bin
httpd -t
Это проанализирует все файлы конфигурации и даст вам имя файла и номер строки, где была обнаружена ошибка.
Исправить и повторить попытку.
Первый доступ к вашему сайту приведет к созданию страницы сообщений примерно так. Это использует FireFox, другие будут немного отличаться, но концепция это то же самое.
Это связано с тем, что ваш сертификат не подписан доверенным органом DONT PANIC, это должно произойти.
Нажмите "Я понимаю" и покажу вам кнопку "Добавить исключение", Нажмите кнопку "Добавить исключение", после проверки того, что данные сайта сертификатов на самом деле принадлежат вам, и вы не увидите это сообщение еще раз, если вы не очистите список исключений.
БОЛЬШОЕ ПРИМЕЧАНИЕ Начиная с Apache v2.2.12 и OpenSSL v0.9.8j теперь можно защитить более одного сайта на экземпляр Apache. Этот учебник не охватывает этот процесс. Подробнее см. Здесь:
И, как я сказал наверху, теперь вам нужно сделать некоторые исследования по всем параметрам, доступным в конфигурации SSL, и заставить работу работать так, как вы хотите, а не использовать по умолчанию.