Настройка HTTPS
Создание саподписанного SSL сертификата
Делаем следующее:
# cd /etc/ssl # mkdir db # mkdir ca # mkdir clients # touch /etc/ssl/db/index.txt # echo "01" > /etc/ssl/db/serial
Создаем скрипт для создания нашего самоподписанного доверенного сертификата (CA) /etc/ssl/make_ca.sh :
#!/bin/sh openssl req -new -newkey rsa:4096 -nodes -keyout ./ca/ca.key -x509 -days 3650 \ -subj /C=RU/ST=Russia/L=Vologda/O=MIAC/OU=MEDIC/CN=volmed.org.ru/emailAddress=misk@volmed.org.ru \ -out ./ca/ca.crt
Где:
rsa - длина ключа (4096),
-days - Период действия сертификата, в нашем случае 10 лет
/CN - адрес нашего сервера, например volmed.org.ru,
/O - Имя организации, например MIAC,
/OU - Имя подразделения, например MEDIC,
Остальное и так понятно.
Запускаем скрипт make_ca.sh. Какое-то время он будет возиться с генерацией секретного ключа длиной в 4096 бит, на слабой машине это займет время... можете уменьшить длину ключа до 1024 или 2048 бит, если очень не терпится все поскорее попробовать. В итоге мы получим два файла в каталоге /etc/ssl/ca:
ca.crt - это наш самоподписанным доверенный сертификат, и
ca.key - его секретный ключ.
Создание файла конфигурации
Создаем файл /etc/httpd/conf/vhost.d/server.conf
NameVirtualHost *:443 <IfDefine HAVE_SSL> <IfModule !mod_ssl.c> LoadModule ssl_module modules/mod_ssl.so </IfModule> </IfDefine> #Listen 443 <VirtualHost *:443> ServerName volmed.org.ru ServerAlias volmed.org.ru #Alias "/update" "/var/www/html/new" DocumentRoot "/var/www/html/new" ErrorLog /var/log/httpd/update-error.log TransferLog /var/log/httpd/update-access.log CustomLog /var/log/httpd/update-access_log common <IfModule ssl_module> SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLProtocol all -SSLv2 SSLEngine on SSLCertificateFile /etc/ssl/ca/ca.crt SSLCertificateKeyFile /etc/ssl/ca/ca.key </IfModule> </VirtualHost>
где
Название | Описание |
---|---|
ServerName | имя нашего сервера, то же что и при создании сертификата<br\> |
DocumentRoot | Путь до корня сайта |
Вообще пример данного файла есть в /etc/httpd/conf/vhosts.d/01_default_ssl_vhost.conf. Только у него надо поменять расширение, что бы apache его не цеплял.
Получение бесплатного сертификата от https://www.startssl.com/
Хорошая статья по этому поводу.
После получения и сохранения файлов ssl.crt и ssl.key и настройки файлов конфигурации (см выше), при запуске apache сервера, он будет просить пароль, который Вы вводили при получении сертификата. Для того, что бы снять пароль, выполняем скрипт.
cp ssl.key ssl.old.key openssl rsa -in ssl.key -out ssl.key