Настройка HTTPS

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску

Создание саподписанного 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