Как установить сертификат SSL на Nginx для Ubuntu/Debian
(https://serverspace.io/support/help/ssl-certificate-on-nginx-ubuntu-20-04/)
Чтобы использовать протокол HTTPS на веб-сайте, вы должны получить сертификат TLS / SSL и настроить Nginx. Получить сертификат в доверенном центре сертификации за деньги можно в большом количестве сервисов. Бесплатная версия возможна благодаря сервису Let’s Encrypt и описана здесь в шаге 3, вам также необходимо выполнить базовую настройку Nginx. Если вы используете самозаверяющие сертификаты, браузер покажет ошибку при проверке безопасности.
Базовая конфигурация SSL
Если вы приобрели сертификат SSL, вы должны создать полную цепочку своего сертификата из полученного открытого ключа и цепочки центров сертификации. Для этого поместите содержимое файла цепочки в конец файла открытого ключа. Файлы могут иметь расширение .pem или .crt.
cat cert.pem chain.pem > fullchain.pem
Теперь скопируйте файлы на свой сервер. Хороший выбор - поместить закрытый ключ (.key или .pem) в папку / etc / ssl / private /, а файл fullchain.pem - в / etc / ssl / certs /.
Теперь откройте файл конфигурации вашего виртуального хоста (/etc/nginx/sites-available/domain-name.com) и добавьте следующие строки:
server {
listen 443 ssl;
server_name domain-name.com; # Your website's domain name
ssl_certificate /etc/ssl/certs/fullchain.pem; # Path to the full chain of your SSL certificate
ssl_certificate_key /etc/ssl/private/privkey.pem; # Path to the private key of your SSL certificate
}
Не забудьте установить в этом разделе параметры root и index, как и в разделе HTTP.
Перезагрузите Nginx.
systemctl restart nginx
Теперь вы можете проверить свой SSL-сертификат и конфигурацию, используя https://www.ssllabs.com/ssltest/, и перейти к настройкам, которые не соответствуют классу A.
Отключение устаревших протоколов и включение приоритета серверных шифров
Укажите использование TLS версий 1.2 и 1.3 и приоритет для серверных шифров.
Откройте файл /etc/nginx/nginx.conf и исправьте или добавьте следующие строки в раздел http.
http {
...
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
...
}
Перезагрузите Nginx.
systemctl restart nginx
Перенаправление с HTTP на HTTPS
Чтобы настроить сайт на работу только по HTTPS, нужно добавить редирект с HTTP. Откройте файл конфигурации вашего виртуального хоста (/etc/nginx/sites-available/domain-name.com), удалите раздел HTTP:
server {
listen 80;
…
}
Теперь добавьте новый со следующими параметрами:
server {
listen 80;
server_name domain-name.com; # Your website's domain name
return 301 https://$host$request_uri; # Redirect
}
Теперь перезапустите Nginx.
systemctl restart nginx