Настройка безопасного web-сервера в CentOS

Материал из База знаний
Перейти к: навигация, поиск

Настройка безопасного web-сервера в CentOS

1. Получение необходимого программного обеспечения

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

yum install mod_ssl openssl

Соответственно YUM выдаст предупреждение о том, что данные пакеты уже установлены или установит их.

2. Создание собственного сертификата

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

Затем нам нужно обновить конфигурационный файл 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

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

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

<VirtualHost *:80>
        <Directory /var/www/vhosts/yoursite.com/httpdocs>
        AllowOverride All
        </Directory>
        DocumentRoot /var/www/vhosts/yoursite.com/httpdocs
        ServerName yoursite.com
</VirtualHost>

Чтобы добавить еще одного родственника - сайт на порт 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

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

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

iptables -A INPUT -p tcp --dport 443 -j ACCEPT
/sbin/service iptables sav e
iptables -L -v