Думаю ни для кого не секрет, что уже вышла новая версия Ubuntu 18.04 (Bionic Beaver). Некоторые из вас обновились, некоторые уже поставили, но сегодня речь не об этом. Сегодня мы с вами поставим на свежую систему веб-сервер Nginx с бесплатным HTTPS.
В этой статье мы будем использовать приложение Certbot для получения бесплатного сертификата для Nginx и автоматическое его обновление.
Что нам нужно для начала
- Сервер с Ubuntu 18.04 (Хотя воркфлоу подходит и для предыдущих версий ОС). Я буду использовать виртуальную машину с ОС Ubuntu 18.04.
- Нужен зарегистрированный домен. Я буду использовать домен текущего сайта — adminnotes.info
- Настроенные ДНС записи на домен
adminnotes.info
иwww.adminnotes.info
. - Последняя версия Nginx на сервере
Установка Certbot
Первым шагом в получении сертификата будет установка приложения Certbot. Он нужен нам для получения и автоматического продления сертификата.
Добавляем репозиторий:
sudo add-apt-repository ppa:certbot/certbot
Обновим список пакетов:
sudo apt-get update
Установим certbot:
sudo apt-get install python-certbot-nginx
Конфигурация Nginx
Мы будем получать сертификаты сразу для двух доменов — adminnotes.info
и www.adminnotes.info
. Потому, откроем файл конфигурации и внесем правки, у меня это:
nano /etc/nginx/sites-available/adminnotes.info
Найдем там строку server_name
и проверим, чтобы в ней были наши домены, если нет — дописываем.
... server_name adminnotes.info www.adminnotes.info; ...
Конфигурацию поправили, перезагрузим nginx:
service nginx restart
Если ошибок нет (не должно быть :)), можем приступать к получению сертификата.
Получение SSL сертификата
Certbot предоставляет возможность получить сертификат различными способами и под различные приложения (Nginx, Apache, etc.) используя плагины. Мы будем использовать плагин —nginx, так как у нас установлен Nginx в качестве веб сервера.
sudo certbot --nginx -d adminnotes.info -d www.adminnotes.info
-d
этот параметр указывает, для какого домена нужен сертификат.
Если это был первый запуск команды, вам предложат принять правила и ввести ваш контактный email. После ввода данных вы получите следующее сообщение:
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 или 2 и нажимаем ENTER. После этого сервер будет перезагружен и новая конфигурация вступит в силу. Если все хорошо, вы получите сообщение:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/adminnotes.info/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/adminnotes.info/privkey.pem Your cert will expire on 2018-07-23. 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
На этом установка и активация сертификатов закончена.
Автоматическое продление сертификата
Стоит помнить о том, что сертификат действителен всего лишь 90 дней и по истечению этого периода, его нужно продлить. Пакет, который мы установили уже предоставляет нам скрипт, который будет автоматически продлевать сертификаты. Он запускается 2 раза в день. Для ручного продления можно использовать команду:
sudo certbot renew --dry-run
Таким простым способом мы можем получить для сайта бесплатный SSL сертификат