Незащищённое 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 порту, поэтому если сервер находится за шлюзом, то необходимо на нём пробросить данный порт.