Переход на HTTPS с бесплатными сертификатами Let’s Encrypt под Apache
Одна из основных проблем перехода на HTTPS это платные сертификаты. Есть два выхода в подобной ситуации. Первый это использовать самоподписаные сертификаты, но в этом случае браузер не пускает пользователя на сайт пока пользователь не согласится с угрозой безопасности. Чаще всего пользователи пугаются и игнорируют подобный сайт. Исключение составляют всевозможные комерческие сайты для которых прямо в инструкции написано, что необходимо согласиться с этим предупреждением. Второй выход это использовать разные системы по выпуску бесплатных сертификатов. Одна из таких компаний: Let’s Encrypt. Один из минусов бесплатных сертификатов в том, что они обычно выпускаются на короткий срок. Как правило 90 дней.
Так как мне нужно было проэкспериментировать с одной идеей, я решил запустить на домашнем сервере HTTPS-сервер и получить на него бесплатный сертификат. Выбор пал на автоматический выпуск сертификатов с использованием Certbot. В моём случае установлена операционная система Debian 9 (Strache) и Apache 2.4. Если перейду на другую для своего web-сервера, то выпущу ещё одну статью. Но думаю, что ничего кардинально не изменится.
NB: Перед настройкой войдём в систему с правами администратора.
Для начала добавим репозиторий backports в /etc/apt/sources.list. Откроем этот файл на редактирование и добавим строчку:
deb http://ftp.debian.org/debian stretch-backports main
Далее обновим систему и всё, что подтянется за этим процессом:
apt update apt upgrade
После обновления желательно перезагрузить систему и проверить, что она всё-ещё в работоспособном виде. Следующим шагом установим бот для выпуска сертификатов, который ориентируется на Apache. Многие советуют после установки перезагрузить Apache.
apt install python-certbot-apache -t stretch-backports systemctl reload apache2
Теперь мы готовы к выпуску сертификата. Я выпускал сертификат для суб-домена. Команда для выпуска сертификата выглядит вот так:
certbot --apache -d media.orcinus.ru
Но вы можете использовать вот такую конструкцию:
certbot --apache -d orcinus.ru -d www.orcinus.ru -d media.orcinus.ru -d stream.orcinus.ru
Можно указать дикое количество доменов, но не забывайте, что чем больше доменов, тем больше время обработки сертификата браузером. Так, что не забывайте об этой тонкости. При первом выполнении команды вас попросят ввести свой почтовый ящик.
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): почта@orcinus.ru
Следующим шагом попросят подтвердить согласие с лицензионным соглашением.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: a
Далее следует вопрос об использовании вашего адреса.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: y
Далее идёт процесс выпуска сертификата и подтверждение владения доменом.
Obtaining a new certificate Performing the following challenges: http-01 challenge for media.orcinus.ru Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-enabled/media-le-ssl.conf Deploying Certificate to VirtualHost /etc/apache2/sites-enabled/media-le-ssl.conf
После редактирования конфигурационных файлов у нас спросят хотим ли мы оставить обработку HTTP-запросов как есть или сделать безусловный редирект на HTTPS.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
И под конец, скрипт завершает работу и предлагает немножко задонатить.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://media.orcinus.ru You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=media.orcinus.ru - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/media.orcinus.ru/---------.pem Your key file has been saved at: /etc/letsencrypt/live/media.orcinus.ru/-------.pem Your cert will expire on 2020-10-15. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Как ни странно на этом всё. Бот сам перезагружает Apache для того, чтобы применились все настройки. HTTP запустился и в локальной сети и извне. Кстати, если вы используете роутер, то не забудьте пробросить 443 порт до нужного хоста.
До новых встреч, будьте в безопасности!
Тэги: ИТ
Отредактировано:2020-09-04 13:48:24
Имеет смысл смысл дописать в статью описание выпуска сертификатов для nginx, так как часто применяются двухуровневые конфигурации