понедельник, 14 января 2008 г.

Установка Apache + OpenSSL на Windows

Речь пойдет о дистрибутиве Apache 2.2.x.
Другие дистрибутивы не проверял. Установку проводил на Windwos XP, но все это будет работать и на серверных осях.

1) Скачиваем дистрибутив Apache для win32 с поддержкой SSL (на текущий момент это apache_2.2.6-win32-x86-openssl-0.9.8e.msi) и запускаем установку. Скачать можно тут http://www.sai.msu.su/apache/httpd/binaries/win32/

2) На этом экране жмем Next



3) Далее соглашаемся с лицензией (иначе ни как :) )



4) Вдумчиво читаем во это :), если есть время :)



5) Заполняем поля как показано ниже (потом все это можно изменить в файле конфигурации httpd.conf)



6) Выбираем Custom (мы же умные :) )



7) Выбираем каталог для установки. Путь может быть любой, но лучше избегать пробелов в названиях папок. Далее (в других статьях) все примеры будут относительно этого пути. Так что бдите :) ПУТЬ и да пребудет с вами Сила. Омммм.....



8) Жмем Next, затем Install и пошла установка... Пару раз всплывет консолька, это удаляются временные файлы и устанавливается Apache как сервис. В трее появится значок для управления сервисом Apache.

9) Проверяем установку. Просто вводим в строке браузера localhost. И видим страничку с надписью It works! как показано на рисунке ниже.



Если такого не увидели, то повторяем шаги от 1 до 9 пока не увидим. :)

10) Правим файлик httpd.conf, который в моем случае лежит в папочке Z:\WAMPServer\Apache\conf
Добавляем туда строчку Listen 443 под строкой Listen 80, как показано на рисунке ниже.



11) Рестартуем Apache. И вводим в строке броузера http://localhost:443/ и наблюдаем в браузере надпись It works! как показано на картинке ниже. И погодите радоваться :) Это еще не SSL, это просто проверка того, что Apache слушает на 443 потру.



Если не видим, то пробуем остановить Apache и запустить его снова (иногда рестарт не помогает). Если и это не помогло, то повторяем шаги с 1 по 11 пока не увидим :)

12) Далее копируем из папочки Z:\WAMPServer\Apache\bin два файлика ssleay32.dll и libeay32.dll в каталог %systemroot%\system32. Внимание!!! Это очень важный шаг! Не пропустите его!

13) Копируем файлик openssl.cnf из каталога Z:\WAMPServer\Apache\conf в каталог Z:\WAMPServer\Apache\bin

14) Создаем сертификат для нашего сервера. Для этого заходим в каталог Z:\WAMPServer\Apache\bin (консолью или FAR-ом) и там вводим команду:

openssl req -config openssl.cnf -new -out my-server.csr

И отвечаем на все вопросы. Как показано на картинке (пароль естественно не виден, вообще вы можете ввести здесь все что угодно или просто ставить точку в ответе, тогда это поле останется пустым, единственное исключение составляет вопрос Common Name, здесь надо ввести доменное имя для которого будет использоваться сертификат, например www.vasya.ru, в нашем случае localhost):



После этого в каталоге Z:\WAMPServer\Apache\bin образуется файлик my-server.csr

Далее последовательно даем команды:

openssl rsa -in privkey.pem -out my-server.key
openssl x509 -in my-server.csr -out my-server.cert -req -signkey my-server.key -days 365
openssl x509 -in my-server.cert -out my-server.der.crt -outform DER



15) Создаем каталог ssl в каталоге Z:\WAMPServer\Apache\conf и перемещаем туда файлики my-server.key и my-server.cert из каталога Z:\WAMPServer\Apache\bin



16) В файле httpd.conf находим и раскоментируем строчку
LoadModule ssl_module modules/mod_ssl.so

Далее идем в конец фала и видим там блок:

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Приводим его к следующему виду:

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLMutex default
SSLSessionCache none
</IfModule>

Далее в конце добавляем следующее:

<VirtualHost localhost:443>
SSLEngine On
SSLCertificateFile conf/ssl/my-server.cert
SSLCertificateKeyFile conf/ssl/my-server.key
</VirtualHost>

В конечном итоге это должно выглядеть как на картинке ниже:



17) Останавливаем Apache если он был запущен и запускаем его из командной строки с ключом -D SSL. Для этого даем команду

Z:\WAMPServer\Apache\bin>httpd.exe -D SSL

Запускать лучше из командной строки с ключом отладки SSL, чтобы можно было увидеть ошибки.

18) В строке браузера вводим https://localhost/ (именно HTTPS) и видим следующее (это при условии что у вас IE7):



Это означает что все работает. Просто нас предупреждают, что сертификат данного узла не был выпущен доверенным центром сертификации, и это правильно, так как сертификат выпустили мы сами :). Жмем Продолжить открытие этого веб-узла и видим следующую картинку:



Итак, все работает :)! Если у вас не заработало, то вдумчиво повторяем шаги с 1 по 18 пока не заработает :)


15 комментариев:

SQUARE_HEAD комментирует...

Огромнейшее спасибо!!!!!!!! Это лучшее, что я встречал. Было бы оч хорошо, если бы ты описал как ко всему этому прикрутить subversion)))))))

Unknown комментирует...

Большое.
Общечеловеческое.
Спасибо.

LOBsTerr комментирует...

Спасибо, огромное. Я перерыл и перечиатл кучу инфы. Но такого подробного мануала нигде не находил. Ты мне реально помог. Пожал бы руку при встрече и напоил бы пивом!

peha84 комментирует...

Спасибо огромное за статью.
Есть только один вопрос: Возможно ли как-то поцепить https на другой порт, не 443?

Анонимно комментирует...

Огромное спасибо!!! На весь интернет единственная такая статья!!! СПАСИБО!!!

Unknown комментирует...

Спасибо что все так подробно описали! Хотела добавить для тех у кого появляется такая ошибка при запуске апач "make_sock: could not bind to address 0.0.0.0:443" или "make_sock: could not bind to address 0.0.0.0:80". Мне помогло на время запуска апач отключение skype :) И все теперь отлично работает!

Дербуш Олег (aka Snake-60) комментирует...

Отличная статья! По ней настроил SSL для WampServer2/ Правда были кое-какие нюансы с путями к файлам, но это мелочи :)
Лене хочу сказать, что использование 80 порта скайпом можно настроить в самом скайпе. А указанную выше ошибку я исправил указав явно порты для айпишника, то есть не
Listen 80
Listen 443
а
Listen 127.0.0.1:80
Listen 127.0.0.1:443
Удачи, может кому-то и мой совет поможет ;)

Анонимно комментирует...

Вроде бы все работает.
А как запускать не из командной строки, а из "Монитора" в режиме -D SSL ?

Unknown комментирует...

1) Пока не создал папку C:\openssl-1.0.2l-win64\ssl\ для openssl.cnf не удавалось сделать сертификат
2) с опцией SSLMutex default апач 2.4 у меня не стартует, решение: Mutex default

Unknown комментирует...

1) Пока не создал папку C:\openssl-1.0.2l-win64\ssl\ для openssl.cnf не удавалось сделать сертификат
2) с опцией SSLMutex default апач 2.4 у меня не стартует, решение: Mutex default

Unknown комментирует...

1) Пока не создал папку C:\openssl-1.0.2l-win64\ssl\ для openssl.cnf не удавалось сделать сертификат
2) с опцией SSLMutex default апач 2.4 у меня не стартует, решение: Mutex default

Unknown комментирует...

1) Пока не создал папку C:\openssl-1.0.2l-win64\ssl\ для openssl.cnf не удавалось сделать сертификат
2) с опцией SSLMutex default апач 2.4 у меня не стартует, решение: Mutex default

Unknown комментирует...

1) Пока не создал папку C:\openssl-1.0.2l-win64\ssl\ для openssl.cnf не удавалось сделать сертификат
2) с опцией SSLMutex default апач 2.4 у меня не стартует, решение: Mutex default

Unknown комментирует...

ОГРОМНОЕ СПАСИБО! Только твоя статья спасла, весь день убил, пока не наткнулся на нее =)

-=*=- комментирует...

пожалуйста