Пример приведен на 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 [email protected]
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 [email protected]
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 [email protected]
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