Как установить Let’s Encrypt на Ubuntu с nginx
Установка
apt install software-properties-common
add-apt-repository ppa:certbot/certbot
apt update
apt upgrade
apt install letsencrypt
Конфигурация
mcedit /etc/letsencrypt/cli.ini
В нём:
post-hook = service nginx reload
Далее в консоли:
certbot register --email ваш_email
Настройка для домена
Редактируем хост:
mcedit /etc/nginx/sites-available/...
Добавляем правило:
location ~ /.well-known {
root /var/www/well-knowns/домен;
}
Далее в консоли:
mkdir -p /var/www/well-knowns/домен/.well-known
Создаём тестовый файл:
mcedit /var/www/well-knowns/домен/.well-known/test.txt
Перезагружаем nginx:
service nginx reload
Открываем в браузере http://домен/.well-known/test.txt
Удалить тестовый файл, если всё хорошо.
Проверяем работоспособность создания сертификата:
letsencrypt certonly --dry-run -d домен -d www.домен
При запросе webroot указываем /var/www/well-knowns/домен/
Если всё ок, то создаём уже сертификат по-настоящему:
letsencrypt certonly -d домен -d www.домен
Проверка
openssl x509 -text -in /etc/letsencrypt/live/домен/cert.pem
В nginx конфигурации хоста добавляем новые параметры:
ssl_certificate /etc/letsencrypt/live/домен/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/домен/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/домен/chain.pem;
ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:RSA+3DES:!NULL:!RC4;
В файле /etc/cron.d/certbot должен быть автозапрос продления сертификатов.
OCSP stapling
Браузеры, кроме Chrome, имеют свойство обращаться к CA для сверки со списком отозванных сертификатов, задерживая открытие страниц на секунды. Устранить эту задержку можно прикладывая подписанный ответ OCSP сервера к ответу при создании нового соединения.
tee /etc/nginx/conf.d/ssl_stapling.conf <<EOF
resolver 127.0.0.1;
ssl_stapling on;
ssl_stapling_verify on;
EOF
Если у вас нет локального кеширующего DNS сервера, в директиве resolver следует указать IP фактически используемого DNS сервера.
nameserver=$(grep nameserver /etc/resolv.conf | head -1 | cut -f2 -d" ")
sed -i s/127.0.0.1/$nameserver/ /etc/nginx/conf.d/ssl_stapling.conf
grep resolver /etc/nginx/conf.d/ssl_stapling.conf
Заметка основана на https://habrahabr.ru/post/318952/ и https://www.alexeykopytko.com/2017/free-ssl-from-letsencrypt/