Как настроить WAMPServer для использования HTTPS SSL
* Это не тривиальный процесс. Надеемся, что это руководство поможет вам работать с SSL.
Однако настроить его правильно, как только он заработает, ПОЛНОСТЬЮ ВАС.
Дополнительное чтение для всех, кто путешествует по этой дороге
В порядке,
Я основал это руководство на создании сайта под названием www.wamphelpers.dev Так что, где бы вы ни увидели, это имя меняется на имя сайта, которое вы пытаетесь защитить.
Я начал с создания незащищенного сайта в \wamp \www \wamphelpers
добавил виртуальный хост для этого сайта, в 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
127.0.0.1 wamphelpers.dev www.wamphelpers.dev
::1 wamphelpers.dev www.wamphelpers.dev
Теперь перезапустите dnscache следующим образом из командных окон, запущенных с помощью «Запуск от имени администратора».
net stop dnscache
net start dnscache
Затем создал простой скрипт в \wamp \www \wamphelpers \index.php
<?php
echo 'Hello, this is the WAMPHELPERS.DEV site homepage';
?>
Теперь перезапустите Apache и убедитесь, что ваш простой незащищенный сайт работает, before continuing
Инструментарий openssl.
Openssl.exe, ssleay32.dll и libeay32.dll поставляются с папкой C:\wamp\bin\apache\apachex.yz \bin и находятся в ней. Это все, что вам нужно для создания самозаверяющего сертификата !!
ОДНАКО: Они не работают для меня ни на одной из версий Apache, которые я установил.
Я всегда получаю это сообщение об ошибке.
Где порядковый номер изменился в зависимости от папки версии Apache, в которой я находился.
Если вы получили эту ошибку, не беспокойтесь, это то, что вам нужно сделать.
установить последнюю версию OPENSSL TOOLKIT
Это можно получить здесь
Выберите последнюю версию Win32 OpenSSLv xxx Light, так как это все, что вам нужно.
Это загрузит файл .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
Это должно было создать файл в папке сайта с именем privkey.pem, без ключа пароля, проверьте, существует ли он.
Шаг 2. Создайте CSR (запрос на подпись сертификата)
Во время создания CSR вам будет предложено ввести несколько частей информации.
Это атрибуты сертификата X.509.
Одной из подсказок будет «Общее имя (например, полное доменное имя сервера или ВАШЕ имя) []:».
Важно, чтобы в этом поле было указано полное доменное имя сервера, защищаемого с помощью SSL. Таким образом, если защищаемым веб-сайтом будет https://www.wamphelpers.dev
, введите в этом приглашении www.wampheplers.dev
.
Ничего не вводите в вопрос: пароль для вызова []: ] Просто нажмите Enter.
Если вы введете здесь парольную фразу при запуске Apache с настроенным SSL, Apache не запустится и выдаст следующее сообщение об ошибке: -
[ошибка] 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) []: www.wamphelpers.dev
Email Address []: me@wamphelpers.dev
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, пока центр сертификации подписывает ваш сертификат.
ПРЕДВАРИТЕЛЬНОЕ ПРЕДУПРЕЖДЕНИЕ. Этот сертификат приведет к ошибке в клиентском браузере, в результате чего подписывающий центр сертификации неизвестен и не является доверенным.
Это неизбежно, так как мы сами подписываем сертификат, но, конечно, сеть доверия не знает, кто мы.
См. Пример далее в этом документе, показывающий, как сообщить браузеру, что вы действительно доверяете этому сертификату.
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/emailAddress=riggsfolly@wamphelpers.dev
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 ssl_module modules/mod_ssl.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. Настройте защищенные сайты Virtual Host
Да для всех вас Виртуальный Хозяин, не говоря, теперь вы не можете избежать этого процесса.
Отредактируйте \wamp\bin\apache\apachex.y.z\conf\httpd-ssl.conf
Этот файл выпущен Apache и содержит местоположение по умолчанию.
Мы можем оставить большую часть этого файла как есть, но нам нужно настроить здесь виртуальный хост, чтобы он соответствовал нашему фактическому местоположению сайтов, а также несколько других вещей:
найти эти строки
DocumentRoot "c:/Apache2/htdocs"
ServerName www.example.com:443
ServerAdmin admin@example.com
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"
найти
SSLCertificateFile "c:/Apache2/conf/server.crt"
и изменить на
SSLCertificateFile "c:/wamp/bin/apache/apachex.y.x/conf/ssl.crt/server.crt"
найти
SSLCertificateKeyFile "c:/Apache2/conf/server.key"
и изменить на
SSLCertificateKeyFile "c:/wamp/bin/apache/apache2.2.26/conf/ssl.key/server.key"
найти
<Directory "c:/Apache2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
и изменить на
<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>
найти
SSLSessionCache "shmcb:c:/Apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
и изменить его на
SSLSessionCache "shmcb:c:/wamp/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
найти
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, и заставить все работать так, как вы хотите, вместо использования по умолчанию.