Отримання SSL-сертифікату для Nginx на Debian 9
Простий спосіб отримати безкоштовний SSL-сертифікат з оцінкою A+ для Nginx на Debian 9
Спочатку додаємо репозиторій stretch-backports
add-apt-repository 'deb http://deb.debian.org/debian stretch-backports main'
apt-get update
Встановлюємо утиліту для автоматичного отримання та оновлення сертифікатів certbot
apt-get install certbot python-certbot-nginx -t stretch-backports
В конфігураційному файлі для нашого сайту надаємо certbot-у доступ до необхідної йому директорії
# Let’s Encrypt
location ~ /.well-known {
allow all;
}
та перечитуємо конфігурацію nginx
nginx -t
nginx -s reload
Отримуємо сертифікати
certbot --nginx
Відповідаємо на питання бота, дозволяємо внести зміни в конфігурацію nginx і вуаля )))
На останок certbot пропонує перевірити сертифікати за посиланням https://www.ssllabs.com/ssltest/analyze.html?d=sample.bender.kr.ua
Добре, але можна краще.
Поглянемо які налаштування додав certbot в конфіг сайту.
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
Згенеруємо новий 4096 бітний ключ
openssl dhparam -out /etc/letsencrypt/ssl-dhparams-4096.pem 4096
та поміняємо налаштування
ssl_dhparam /etc/letsencrypt/ssl-dhparams-4096.pem; # managed by Certbot
Поки генерується ключ (а процес це доволі довгий), внесемо зміни в options-ssl-nginx.conf.
Кешуємо відповіді з ЦА, який видав сертифікат. В якості резолвера вказуємо Google DNS.
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 10s;
Встановлюємо заголовок HTTP Strict Transport Security (HSTS).
add_header Strict-Transport-Security "max-age=31536000;";
Перечитуємо конфігурацію Nginx і перевіряємо сертифікат
nginx -t
nginx -s reload
Юх-у-у-у-у!!!