Незащищённое http — соединение опасно тем, что существует возможность прослушивания трафика и соответственно паролей, отсылаемых на сайты вместе с логинами по POST или GET.
Использование сертификатов защищает от пассивного прослушивания и, если сертификат подписан компанией-центром сертификации (Certificate authority или CA) , гарантирует клиентам, что сервер является именно тем сервером, который им нужен.То-есть сертификат, подписанный CA, предоставляет два важных свойства в отличие от самоподписанного сертификата:
- Браузеры (обычно) автоматически распознают такой сертификат и позволяют устанавливать защищенные соединения без предупреждения пользователя.
- Когда CA выпускает подписанный сертификат, он гарантирует идентичность организации, которая предоставляет интернет страницы браузеру.
В Ubuntu есть возможность создания самоподписанных сертификатов, которые бесплатны и только шифруют трафик. Для большинства случаев этого достаточно.
Для начала, если не установлен, необходимо установить openssl:
sudo apt-get update sudo apt-get install openssl
Для создания ключа и сертификата вводим команду:
sudo openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/server.pem -keyout /etc/ssl/private/server.key
Этой командой генерируется ключ без пароля (passphrase), чтобы Apache не мучил запросам пароля при каждом перезапуске.
На вопрос «Common Name (e.g. server FQDN or YOUR name) []:» необходимо ввести имя сайта, для которого создается сертификат, например www.example.com.
Настройка Apache
Для начала необходимо активировать mod_ssl:
sudo a2enmod ssl
а затем включить настройки HTTPS сайта по умолчанию:
sudo a2ensite default-ssl
Теперь необходимо отредактировать файл с настройками HTTPS сайта по умолчанию, указав в нём пути к сертификатам.
Сам файл называется
/etc/apache2/sites-enabled/default-ssl.conf
В этом файле рекомендуется после директивы
SSLEngine on
добавить строчку
SSLProtocol all -SSLv2
чтобы запретить использование устаревшего протокола SSLv2.
Дальше необходимо отредактировать параметры, ответственные за сертификаты.
# Публичный сертификат сервера SSLCertificateFile /etc/ssl/certs/server.pem # Приватный ключ сервера SSLCertificateKeyFile /etc/ssl/private/server.key
Перезагрузить Apache:
sudo service apache2 restart
И если все параметры указаны верно, сайт станет доступнен по HTTPS.
Протокол HTTPS работает по 443 порту, поэтому если сервер находится за шлюзом, то необходимо на нём пробросить данный порт.