Веб-сайты HTTPS


Многие интернет-магазины, защищенные паролями, применяют так называемые безопасные веб-сайты. Обычно под этим понимается шифрование трафика между сервером и клиентом с помощью SSL. Хотя безопасность таких сайтов не в полной мере соответствует их названию, функции SSL жизненно важны почти для любого веб-сервера. Функциональность SSL интегрирована в Apache в виде модуля extra/httpd-ssl.conf. Для включения поддержки SSL надо раскомментировать соответствующую строку в файле httpd.conf.

Каждому серверу SSL нужен сертификат. Генерирование запроса на сертификат и создание самозаверенного сертификата рассматривалось в главе 9. Для личных нужд вполне подойдет самозаверенный сертификат, но в случае предоставления услуг другим необходимо приобрести сертификат, заверенный центром сертификации. Если попытаться использовать самозаверенный сертификат в приложении, с которым работают клиенты, они будут получать страшные предупреждения о недостаточно высоком уровне безопасности.

Полный сертификат состоит из двух частей — файла сертификата (hostname.crt) и секретного ключа (hostname.key). Разместите оба файла в каталоге за пределами содержимого веб-сервера, чтобы никто не смог загрузить его с веб-сервера. Затем надо разрешить чтение файла только непривилегированному пользователю, с правами которого работает веб-сервер, и сделать их недоступными для обычных пользователей.

# chmod 600 hostname.crt
# chmod 600 hostname.key
# chown www:www hostname.crt
# chown www:www hostname.key

Теперь, когда в системе появился сертификат, надо известить об этом Apache. В прошлом необходимость настраивать SSL доводила опытных системных администраторов до слез; сегодня для этого нужно добавить всего четыре строки в конфигурацию виртуального хоста:

<VirtualHost 192.168.1.5:443>
    ServerName secure.absolutefreebsd.com
    SSLEngine on
    SSLCertificateFile etc/apache22/ssl.crt/hostname.crt
    SSLCertificateKeyFile etc/apache22/ssl.key/hostname.key
...

Прежде всего, отметим, что виртуальный хост создан на базе IP-адреса и прослушивает порт 443. Стандартные сайты HTTPS работают с портом TCP 443.

Параметр ServerName чрезвычайно важен для сайтов HTTPS. Значение параметра ServerName должно точно соответствовать результатам обратного поиска в DNS по IP-адресу и имени в сертификате SSL. Если между тремя этими именами нет точного соответствия, пользователь может увидеть предупреждение системы безопасности. Параметр ServerAlias не имеет большого значения для веб-сайтов HTTPS.

Затем необходимо включить механизм SSL для сайта и указать ему полный путь к сертификату и секретному ключу. Указывайте полное имя хоста для файлов сертификата и секретного ключа.

Безопасные веб-серверы и SSL

Я рекомендую избегать термина «безопасный веб-сервер», если имеется в виду SSL. Шифрование трафика между сервером и клиентом защищает лишь от одной из разновидностей сетевых атак. Злоумышленники по-прежнему могут взломать либо сервер, либо клиентскую машину. Для безопасности веб-серверу требуется хороший дизайн веб-страниц, регулярное обслуживание и образованный системный администратор, которого не дергают по пустякам, позволяя ему спокойно заниматься своим делом. Хотя последний пункт этих требований практически невыполним, он меркнет рядом с таким условием безопасности веб-клиента, как образованный пользователь!

Комментарии запрещены.