Представим, что у вас есть сервер на 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