Данное руководство дает минимальное представление о том, как запустить сайт на сервере под HTTPS. В руководстве используется самоподписной ключ, что подходит для использования на личном сайте или в целях учебного тестирования. Вы должны понимать все риски при следовании данному руководству и не забывать про резервные копии ваших данных.
Получение необходимого программного обеспечения
Для обеспечения SSL шифрования на вашем веб-сервере вам потребуется несколько вещей. В соответствии с предустановленным набором программного обеспечения вы можете иметь или не иметь в своей системе OpenSSL и mod_ssl, интерфейс apache для OpenSSL. Воспользуемся YUM чтобы установить их в нашу систему, если это необходимо.
Код
yum install mod_ssl openssl
Соответственно YUM выдаст предупреждение о том, что данные пакеты уже установлены или установит их.
Создание собственного сертификата
Используя OpenSSL мы будем генерировать собственный сертификат. Если вы используете это на рабочем сервере (продакшн), вы, вероятно захотите ключ от доверенного центра сертификации, но если вы используете это на личном сайте или в целях тестирования — собственного сертификата вполне достаточно. Для создания сертификата вам нужно быть суперпользователем (root) — используйте команду su для root-а или sudo перед следующими командами:
Код
# Генерация приватного ключа
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
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.
Код
nano +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf
Измените путь до места, где хранится файл ключа. Если вы воспользовались способом описанным выше, то он будет:
Код
SSLCertificateFile /etc/pki/tls/certs/ca.crt
Затем установите правильный путь к файлу сертификата. Если вы следовали инструкциям выше он будет:
Код
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
Сохраните файл и перезагрузите Apache.
Код
service httpd restart
Настройка виртуальных хостов
Все аналогично тому, как вы создавали VirtualHosts для HTTP на 80 порту — все тоже для HTTPS на порту 443.
Редактируем:
Код
nano /etc/httpd/conf/httpd.conf
Типичный виртуальный хост для 80 порта выглядит так:
Код
<VirtualHost>
ServerAdmin webmaster@yoursite.com
DocumentRoot /home/hosts/yoursite.com
ServerName yoursite.com
ServerAlias www.yoursite.com
<Directory>
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
ServerAdmin webmaster@yoursite.com
DocumentRoot /home/hosts/yoursite.com
ServerName yoursite.com
ServerAlias www.yoursite.com
<Directory>
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Чтобы добавить еще одного родственника — сайт на порт 443, необходимо добавить следующее в верхней части вашего файла:
Код
NameVirtualHost *:443
а затем создать запись для VirtualHost;
Код
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
ServerAdmin webmaster@yoursite.com
DocumentRoot /home/hosts/yoursite.com
ServerName yoursite.com
ServerAlias www.yoursite.com
<Directory>
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/hosts/yoursite.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
ServerAdmin webmaster@yoursite.com
DocumentRoot /home/hosts/yoursite.com
ServerName yoursite.com
ServerAlias www.yoursite.com
<Directory>
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/hosts/yoursite.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Перезапустите Apache еще раз, используя:
Код
service httpd restart
Настройка брандмауэра
Теперь вы владелец сайта работающего на HTTPS с помощью своего сертификата. Если вы не можете подключиться к серверу, то возможно, потребуется открыть порт в брандмауэре. Для этого внесите изменения в ваши правила iptables:
Код
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/service iptables save
iptables -L -v
/sbin/service iptables save
iptables -L -v