Let's Encrypt - это центр сертификации (CA), который предоставляет бесплатные SSL-сертификаты с помощью автоматизированного клиента. Используя SSL-сертификат Let's Encrypt, вы можете зашифровать трафик между вашим сайтом и посетителями. Весь процесс прост, и обновления могут быть автоматизированы. Также обратите внимание, что установка или обновление сертификатов не приводит к простоям.
В этом руководстве мы будем использовать Certbot для получения, установки и автоматического обновления вашего SSL-сертификата. Certbot активно разрабатывается Electronic Frontier Foundation (EFF) и является рекомендуемым клиентом Let's Encrypt.
Предпосылки
- Экземпляр Vultr под управлением Ubuntu 16.04
- Зарегистрированное доменное имя, указывающее на ваш сервер
- Nginx
Установить Certbot
Чтобы получить SSL-сертификат Let's Encrypt, вам необходимо установить клиент Certbot на свой сервер.
Добавьте репозиторий. Нажмите ENTERклавишу, когда будет предложено принять.
add-apt-repository ppa:certbot/certbot
Обновите список пакетов.
apt-get update
Продолжите, установив Certbot и пакет Nginx Certbot.
apt-get -y install python-certbot-nginx
Настройка Nginx
Certbot автоматически настраивает SSL для Nginx, но для этого ему нужно найти блок сервера в файле конфигурации Nginx. Это делается путем сопоставления server_name
директивы в файле конфигурации с именем домена, для которого вы запрашиваете сертификат.
Если вы используете файл конфигурации по умолчанию, /etc/nginx/sites-available/default
откройте его в текстовом редакторе, таком как nano
и найдите server_name
директиву. Замените подчеркивание _
на свои доменные имена:
nano /etc/nginx/sites-available/default
После редактирования файла конфигурации server_name
директива должна выглядеть следующим образом. В этом примере я предполагаю, что ваш домен - example.com, и вы запрашиваете сертификат для example.com и www.example.com.
server_name example.com www.example.com;
Продолжайте, проверяя синтаксис ваших правок.
nginx -t
Если синтаксис правильный, перезапустите Nginx, чтобы использовать новую конфигурацию. Если вы получили какие-либо сообщения об ошибках, снова откройте файл конфигурации и проверьте наличие опечаток, затем повторите попытку.
systemctl restart nginx
Получение SSL-сертификата Let's Encrypt
Следующая команда получит сертификат для вас. Отредактируйте свою конфигурацию Nginx, чтобы использовать ее, и перезагрузите Nginx.
certbot --nginx -d example.com -d www.example.com
Вы также можете запросить сертификат SSL для дополнительных доменов. Просто добавьте -d
опцию " " столько раз, сколько хотите.
certbot --nginx -d example.com -d www.example.com -d example.net -d example.net
Если вы хотите получить сертификат только из Let's Encrypt без его автоматической установки, вы можете использовать следующую команду. Это вносит временные изменения в вашу конфигурацию Nginx для получения сертификата и отменяет их после загрузки сертификата.
certbot --nginx certonly -d example.com -d www.example.com
Если вы запускаете Certbot в первый раз, вам будет предложено ввести адрес электронной почты и принять условия обслуживания. Этот адрес электронной почты будет использоваться для уведомлений об обновлении и безопасности. После того как вы предоставили адрес электронной почты, Certbot запросит сертификат у Let's Encrypt и запустит запрос, чтобы убедиться, что вы контролируете данный домен.
Если Certbot может получить сертификат SSL, он спросит, как бы вы хотели настроить свои HTTPS
параметры. Вы можете либо перенаправить посетителей, которые посещают ваш сайт через незащищенное соединение, либо разрешить им доступ к нему через незащищенное соединение. Обычно это должно быть включено, потому что это гарантирует, что посетители получают доступ только к версии вашего сайта, защищенной SSL. Выберите ваш выбор, затем нажмите ENTER.
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):
Наконец, Certbot подтвердит, что процесс прошел успешно и где хранятся ваши сертификаты. Ваши сертификаты теперь загружены и установлены.
Автоматизация обновления
Поскольку Let's Encrypt - это бесплатный центр сертификации, и для поощрения пользователей к автоматизации процесса обновления сертификаты действительны только в течение 90 дней. Certbot позаботится о продлении сертификатов автоматически. Это делается путем запуска certbot renew
дважды в день через systemd
.
Вы можете проверить, работает ли автоматическое обновление, запустив эту команду.
certbot renew --dry-run
Вы также можете вручную обновить свой сертификат в любое время, выполнив следующую команду.
certbot renew
Улучшенная конфигурация
Приведенные выше команды получают и устанавливают сертификат SSL с конфигурацией, которая подходит для большинства случаев. Если вы хотите внедрить расширенные меры безопасности для своего веб-сайта, вы можете использовать следующую команду для получения сертификата.
certbot --nginx --rsa-key-size 4096 --must-staple -d example.com -d www.example.com
--rsa-key-size 4096
Использует 4096-битный RSA ключ вместо 2048 - битного ключа, который является более безопасным. Недостатком этого является то, что больший ключ приводит к небольшому снижению производительности. Кроме того, старые браузеры и устройства могут не поддерживать 4096-битные ключи RSA.
--must-staple
Добавляет расширение скрепок OCSP Must к сертификату и настраивает Nginx для OCSP сшивания. Это расширение позволяет браузерам проверять, что ваш сертификат не был отозван и ему можно доверять. Однако не все браузеры поддерживают эту функцию.