Данная статья дает минимальные понятия о том, как запустить сайт на сервере под HTTPS. В статье используется самоподписной ключ, что подходит для использования на личном сайте или в учебных целях. Вы должны не забывать про резервные копии ваших данных!

Установка программного обеспечения

Для работы SSL шифрования на вашем web-сервере вам потребуется несколько программ. В соответствии с предустановленным набором программного обеспечения, вы можете иметь или не иметь в своей системе OpenSSL и mod_ssl, интерфейс Apache для OpenSSL. Воспользуемся YUM чтобы установить их.

yum install mod_ssl openssl

Если данное ПО установлено на ваш сервер - будет предупреждение о существовании пакетов, если нет - установить их.

Создание сертификата

Используя 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

  • Перемещение полученных файлов в правильные места
1
2
3
 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.

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

Настройка виртуальных хостов

Все аналогично тому, как вы создавали VirtualHosts для HTTP на 80 порту - все тоже для HTTPS на порту 443. Типичный виртуальный хост для 80 порта выглядит так:

1
2
3
4
5
6
7
 <VirtualHost *:80>
         <Directory /var/www/vhosts/wikiadmin.net/httpdocs>
         AllowOverride All
         </Directory>
         DocumentRoot /var/www/vhosts/wikiadmin.net/httpdocs
         ServerName yoursite.com
 </VirtualHost>

Чтобы добавить еще одного родственника - сайт на порт 443, необходимо добавить следующее в верхней части вашего файла:

NameVirtualHost *:443

а затем создать запись для VirtualHost;

1
2
3
4
5
6
7
8
9
10
 <VirtualHost *:443>
         SSLEngine on
         SSLCertificateFile /etc/pki/tls/certs/ca.crt
         SSLCertificateKeyFile /etc/pki/tls/private/ca.key
         <Directory /var/www/vhosts/wikiadmin.net/httpsdocs>
         AllowOverride All
         </Directory>
         DocumentRoot /var/www/vhosts/wikiadmin.net/httpsdocs
         ServerName yoursite.com
 </VirtualHost>

Перезапустите Apache еще раз, используя:

/etc/init.d/httpd restart

Настройка брандмауэра

Теперь вы владелец сайта работающего на HTTPS с помощью своего сертификата. Если вы не можете подключиться к серверу, то возможно, потребуется открыть порт в брандмауэре. Для этого внесите изменения в ваши правила iptables:

iptables -A INPUT -p tcp –dport 443 -j ACCEPT

/sbin/service iptables save

iptables -L -v

Если Apache при перезагрузке каждый раз спрашивает пароль сертификата

… вам нужно удалить пароль.

Пароль удалить просто:

1
2
3
4
 cp ca.key ca.key.orig #копируем ключ
 openssl rsa -in ca.key.orig -out ca.key 
 Enter pass phrase for db.deblocal.orig: #введите пароль
 writing RSA key #эта строка появится, если пароль верен

Попробуйте перегрузить Apache, запроса пароля больше быть не должно.