1. Установка необходимого программного обеспечения.
Для настройки WEB-сервера с SSL шифрованием вам нужно, чтобы на
сервере были установлены OpenSSL и mod_ssl. В CentOS установка данного
ПО может быть выполнена следующей командой:
# yum install mod_ssl openssl
2. Создание самоподписанного сертификата
Используя OpenSSL Мы можем сгенерировать самоподписанный сертификат.
Для создания ключа используемого в сертификате, нам будет необходимы права пользователя root:
Создаем приватный ключ
# openssl genrsa -out ca.key 1024
Создаем CSR (Certificate signing request)
# openssl req -new -key ca.key -out ca.csr
Создаем самоподписанный ключ
# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
Копируем в корректную директорию
# cp ca.crt /etc/pki/tls/certs
# cp ca.key /etc/pki/tls/private/ca.key
# cp ca.csr /etc/pki/tls/private/ca.csr
После
этого нужно в файле /etc/httpd/conf.d/ssl.conf найти строку с указанием
SSLCertificateFile. Если вы используете редактор vi, то сделать это
можно так:
# vi +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf
Раскомментируйте строку если нужно и отредактируйте как указано ниже (если вы используете пути из данной инструкции):
SSLCertificateFile /etc/pki/tls/certs/ca.crt
После этого установите корректный путь к файлу ключа (Certificate Key File) несколькими строками ниже:
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
Сохраняем файл, выходим из редактора и перезапускаем Apache:
# /etc/init.d/httpd restart
Теперь если вы укажете в пути к сайту протокол https:
https://ServerName_or_IP/
вам будет выдано сообщение с просьбой подтвердить, что вы принимаете сертификат.
3. Настройка виртуальных хостов (virtual hosts)
Так же как вы настраивали виртуальные хосты apache для http на порту 80 вы их настраиваете для https на порту 443. Пример:
<VirtualHost *:80>
<Directory /var/www/vhosts/yoursite.com/httpdocs>
AllowOverride All
</Directory>
DocumentRoot /var/www/vhosts/yoursite.com/httpdocs
ServerName yoursite.com
</VirtualHost>
Чтобы добавить такой же сайт на порту 443 вам нужно указать :
MyHost *:443
Где вместо MyHost вам нужно указать ваш реальный виртуальный хост.
Запись для VirtualHost с httpd будет выглядеть примерно так:
<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
4. Настройка фаервола.
Так же вам возможно понадобится на фаерволе добавить разрешающее правило для порта 443:
# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# /sbin/service iptables save
# iptables -L -v