Apache HTTP Server + SSL: пример быстрой настройки

Автор: | 12/20/2011
 

Пример приведен на FreeBSD 8.2 + Apache HTTP Server 2.2 + OpenSSL 0.9.8q.

Все действия далее выполняем от root-a.

Убедимся, что Apache готов к работе с SSL. В файле конфигурации
/usr/local/etc/apache22/httpd.conf должна быть раскомментирована строка:

LoadModule ssl_module libexec/apache22/mod_ssl.so

Под строкой:

Listen 80

добавим:

Listen 443

Создадим каталог для хранения наших ключей и сертификатов:

#cd ~
# pwd
# /root
# mkdir ssl
# cd ssl

Создадим ключ:

# openssl genrsa -des3 -out akira.key 1024

и укажем пароль.

Создадим сертификат:

# openssl req -new -key akira.key -out akira.csr

Подпишем сертификат:

# openssl x509 -req -days 700 -in akira.csr -signkey akira.key -out akira.cert

Значение days 700 — на какой период выдаем сертификат.

Изменим права доступа:

# chmod 400 akira.*

Создадим каталог для хранения копии ключей:

# cd /etc
# mkdir apache22
# cd apache22/
# mkdir ssl

Скопируем файлы в каталог, с которым будет работать Apache:

# cp akira.cert akira.key /etc/apache22/ssl/

В данном примере для работы по https настраивается уже существующий виртуалхост. Его старая конфигурация:

ServerAdmin admin@website.co.ua
DocumentRoot www/apache22/data/website.co.ua
ServerName website.co.ua
ServerAlias www.website.co.ua
ErrorLog /var/log/apachelogs/website.co.ua.log
CustomLog /var/log/apachelogs/website.co.ua.log common

Отредактируем его так:

ServerAdmin admin@website.co.ua
DocumentRoot www/apache22/data/website.co.ua
ServerName website.co.ua
ServerAlias www.website.co.ua
ErrorLog /var/log/apachelogs/websitecoua-error.log
CustomLog /var/log/apachelogs/websitecoua-access.log common
SSLCertificateFile /etc/apache22/ssl/akira.cert
SSLCertificateKeyFile /etc/apache22/ssl/akira.key
SSLEngine on

Под этим блоком добавим блок, который будет переадресовывать запросы по простому http к новому — https:

ServerAdmin admin@website.co.ua
ServerName website.co.ua
ServerAlias www.website.co.ua
RedirectMatch (.*) https://website.co.ua:443

Разблокируем файл сертификата, что бы не пришлось каждый раз при рестарте Apache вводить его руками:

# openssl rsa -in akira.key -out akira.key
Enter pass phrase for akira.key:
writing RSA key

Проверим правильность синтаксиса /usr/local/etc/apache22/httpd.conf:

# apachectl configtest
# Syntax OK

Перезапустим Apache:

# apachectl restart

Проверим сайт, перейдя по простой http-ссылке: http://website.co.ua/… профит — попадаем на: https://website.co.ua/

Браузер сообщит что не доверяет сертификату, так и сертификат у нас самоподписанный.

Использовались материалы:
netsago.org
daemony.org
nixp.ru
brutenet.livejournal.com
opennet.ru
noteadmin.org.ua