пятница, 28 марта 2014 г.

Настройка https на wamp

В качестве веб сервера при разработке я использую wamp и всем советую. Это сборка Apache, PHP, MySQL, PHPMyAdmin и т.д. В общем аналог Denver и прочего. Очень быстро ставится. Никакой головной боли с запуском и настройкой. Удобный визуальный интерфейс, работа с алиасами и куча других плюшек.
Недавно понадобилось, чтобы веб сервер отдавал контент по HTTPS. По умолчанию SSL выключен. Пришлось некоторое время попотеть над ресерчем. Ниже пошаговый экстракт процесса.
1. Качаем OpenSSL и устанавливаем, например, в папку C:\OpenSSL. Для удобства можно добавить папку C:\OpenSSL\bin в PATH. Это делается через Панель управления-Система-Дополнительные параметры системы-Дополнительно-Переменные среды. Так будет удобнее работать в командной строке.
2.1 С помощью OpenSSL создаем ключ и сертификат командой
openssl req -new -x509 -nodes -out server.crt -keyout server.key
2.2 Раскидываем полученные файлы по путям (папки надо создать):
c:/wamp/bin/apache/Apache2.4.4/conf/ssl.crt/server.crt
c:/wamp/bin/apache/Apache2.4.4/conf/ssl.key/server.key
3. Редактируем: c:\wamp\bin\apache\Apache2.4.4\conf\httpd.conf 
3.1 Убрать комментарий со строки LoadModule ssl_module modules/mod_ssl.so
3.2 Убрать комментарий со строки Include conf/extra/httpd-ssl.conf
4. Редактируем: c:\wamp\bin\apache\Apache2.4.4\conf\extra\httpd-ssl.conf 
Заменяем весь контент на:
Listen 443
SSLPassPhraseDialog  builtin
<VirtualHost _default_:443>
DocumentRoot "c:/wamp/www"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "c:/wamp/logs/apache_error.log"
TransferLog "c:/wamp/logs/access.log"
SSLEngine on
SSLCertificateFile "c:/wamp/bin/apache/Apache2.4.4/conf/ssl.crt/server.crt"
SSLCertificateKeyFile "c:/wamp/bin/apache/Apache2.4.4/conf/ssl.key/server.key"
</VirtualHost>
5. Рестартим Апач.
6. Открываем в браузере https://localhost:443
7. Принимаем сертификат и любуемся результатом