CentOS и HTTPS

Блог им. nabievnurlan7 /
Привет Джейнетовцы! Хочу рассказать Вам о том, как я настраивал HTTPS для одного сайта.
Итак, поехали.

1. Получение необходимого софта
Для обеспечения SSL шифрования вам потребуется несколько вещей. А именно, OpenSSL и mod_ssl, интерфейс apache для OpenSSL.
Воспользуемся YUM чтобы установить их в нашу систему, если это необходимо.
yum install mod_ssl openssl
Если софтины установлены, то YUM выдаст предупреждение, если нет, то установит.

2. Создание собственного сертификата SSL
Для создания сертификата нужно быть РУТом.
Теперь, давайте создадим bash-скриптик, на случай если надо будет много раз делать эти операции.

#!/bin/sh

# Генерация приватного ключа
openssl genrsa -out ca.key 1024

# Генерация запроса на сертификат CSR
openssl req -new -key ca.key -out ca.csr

# Генерация самоподписанного ключа
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

# Перемещение полученных файлов в правильные места
mv ca.crt /etc/pki/tls/certs
mv ca.key /etc/pki/tls/private/ca.key
mv ca.csr /etc/pki/tls/private/ca.csr


При работе скрипта нужно будет вводить необходимые запрашиваемые данные и все.
Затем нам нужно обновить конфигурационный файл Apache SSL /etc/httpd/conf.d/ssl.conf
vi +/SSLCertificateFile   /etc/httpd/conf.d/ssl.conf

Изменяем путь до места, где хранится файл сертификата. Если вы воспользовались скриптом описанным выше, то он будет:
SSLCertificateFile /etc/pki/tls/certs/ca.crt

Также прописываем правильный путь к файлу ключа:
SSLCertificateKeyFile /etc/pki/tls/private/ca.key

Сохраняем файл и ребутим Apache.
/etc/init.d/httpd restart

3. Настройка виртуальных хостов
Теперь переходим к основному конфигурационному файлу Apache /etc/httpd/conf/httpd.conf

Все аналогично тому, как вы когда-то создавали VirtualHosts для HTTP на 80 порту — все тоже для HTTPS на порту 443.
Чтобы добавить еще одного родственника — сайт на порт 443, добавляем следующее в верхней части вашего файла:
NameVirtualHost *:443

а затем создаем дополнительную запись VirtualHost ниже записей вашего сайта:
<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/ca.crt
        SSLCertificateKeyFile /etc/pki/tls/private/ca.key
        <Directory /var/www/vhosts/yoursite.com/httpsdocs>
        AllowOverride All
        </Directory>
        DocumentRoot /var/www/vhosts/yoursite.com/httpsdocs
        ServerName yoursite.com
</VirtualHost>

Перезапустите Apache еще раз, используя:
/etc/init.d/httpd restart

В принципе — все!

5 комментариев

Denisc
Следующий шаг — покупка SSL-сертификата, что бы браузер не ругался на самодельный.
lEx0
чего именно вам не хватает в nginx-е?
nabievnurlan7
Все там в норме. Это я для владельцев Апача написал =)
Кстати, спасибо за коммент. Подбросили идею для будущих постов =)
bigstinky
Ну тогда, для владельцев, добавте в статью, что необходимо в ssl.conf так же прописывать Certificate Authority file для того, чтобы нормальные сертификаты, от доверенных центров сертификации, работали:
SSLCACertificateFile
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.