Установка бесплатного SSL-сертификата для существующего сайта (nginx)

Представим, что у вас есть сервер на Ubuntu 16.04+ и сайт на nginx с готовым конфигом, но без https. Предположим, что его домен звучит как crusat.ru. Меняйте везде на свой, когда встречаете.

Будем устанавливать сертификат от letsencrypt с помощью программы certbot .

Устанавливаем зависимости certbot:

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot

Останавливаем nginx:

$ sudo service nginx stop

Устанавливаем сертификат (укажите также свою почту - туда будут приходить уведомления, когда надо продлить сертификат - этой же командой можно будет)

$ sudo certbot certonly --standalone -n --agree-tos --email crusat@yandex.ru -d crusat.ru

Если необходимо сделать один сертификат для нескольких доменов, то можно написать так:

$ sudo certbot certonly --standalone -n --agree-tos --email crusat@yandex.ru -d crusat.ru -d www.crusat.ru

Далее в конфиге nginx убрать listen 80; и добавить:

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/crusat.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/crusat.ru/privkey.pem;
server_name crusat.ru;

Обратите внимание на пути к файлам ключа и сертификата - letsencrypt их покажет после создания.

После этого можно протестировать, все ли правильно командой:

$ sudo nginx -t

Если конфигурация “ок”, то запускаем

$ sudo service nginx start
bash devops nginx