понедельник, 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)))))))

Kuzin Sergey комментирует...

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

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

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

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

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

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

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

Лена Брайко комментирует...

Спасибо что все так подробно описали! Хотела добавить для тех у кого появляется такая ошибка при запуске апач "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 :) И все теперь отлично работает!

Олег Дербуш комментирует...

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

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

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

Rosario Agro комментирует...

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

Rosario Agro комментирует...

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

Rosario Agro комментирует...

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

Rosario Agro комментирует...

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

Rosario Agro комментирует...

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

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

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

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

пожалуйста