В сегодняшней статье рассмотрим конфигурацию Nginx для получения рейтинга A+ на сайте ssllabs.

Начальная конфигурация:

  • Сервер Ubuntu Server 18.04
  • VestaCP – контроль панель
  • Web сервер Nginx v1.17.2
  • DNS сервер bind9
  • PHP v7.4
  • MySQL v5.7

Все сайты конфигурируются через контроль панель VestaCP, поэтому все примеры будут показаны для данной панели, но также вся приведенная конфигурация применима и к обычной конфигурации сервера.

И так начнем:

Настройка сжатия в Nginx

Открываем файл конфигурации nginx

sudo nano /etc/nginx/nginx.conf

И вносим в секцию http следующие строки:

##Compression
gzip                on;
gzip_static         on;
gzip_vary           on;
gzip_comp_level     6;
gzip_min_length     1024;
gzip_buffers        16 8k;
gzip_types          text/plain text/css text/javascript text/js text/xml application/json application/javascript application/x-javascript application/xml application/xml+rss application/x-font-t$
gzip_proxied        any;
gzip_disable        "MSIE [1-6]\.";

Настройка stapling в Nginx

Для начала создадим файл dhparams.pem:

sudo openssl dhparam -out /home/admin/conf/web/dhparams.pem 4096

путь можете указать свой, но не забудьте тогда поменять его и в конфигурации nginx

Также ускорим проверку сертификата клиентом и увеличим скорость загрузку сайта. Для этого у вас должен быть сертификат SSL. У меня сертификат от letsencrypt, для него и привожу пример. Сертификат получен при помощи certbot установленного в системе.

Давайте добавим в конфигурацию nginx, следующую секцию:

##Stapling Session
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/obu4alka.ru/chain.pem;
resolver 8.8.8.8;
ssl_session_tickets off;
ssl_dhparam /home/admin/conf/web/dhparams.pem;

название сайта и пути пишем свои.

Включаем HSTS в Nginx

В секцию http:

## HSTS Session
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";

Настройка TLSv3 в Nginx

Также вносим в секцию http:

##SSL Session
ssl_session_cache   shared:SSL:10m;
ssl_protocols       TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

Если необходимо, то можете добавить TLSv1.1 и TLSv1.0 в ssl_protocols

Сгенерировать шрифты можно по адресу SSL Configuration Generator

Включаем SSL и HTTP2 в Nginx

Открываем на редактирование файлы виртуальных хостов. По умолчанию они находятся в директории /etc/nginx/sites-enabled/ваш-сайт.conf

В моем случае пути следующие:

sudo nano /home/admin/conf/web/mysite.nginx.ssl.conf

И вношу изменение:

##было
server {
     listen      80.81.82.83:443 ;
     server_name obu4alka.ru www.obu4alka.ru;
##стало
server {
     listen      80.81.82.83:443 http2 ssl;
     server_name obu4alka.ru www.obu4alka.ru;

Работа с HTTPS устроена таким образом, что если у сервера был запрошен по защищенному протоколу сайт, не имеющий сертификата, либо вообще произошло обращение по IP-адресу, то в ответ будет показан тот защищенный сайт, который находится первым в конфигурации. Во многих случаях такое поведение будет неожиданным для пользователя и его следует избегать. В нашем случае, при запросе узла отличного от указанного в конфиге, сервер оборвет соединение без отправки данных (ошибка 444 в Nginx).

server {
     listen      80.81.82.83:443 http2 ssl;
     server_name obu4alka.ru www.obu4alka.ru;
     if ($host != $server_name) {
        return 444;
     }

Тестирование на получения рейтинга A+

переходим на сайт ssllabs.com – для тестирования и получения рейтинга.

Также можете перейти на сайт hstspreload.org– для внесения сайта в списки HSTS сайтов.

[endtxt]

RSS

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

0 0 голоса
Рейтинг статьи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять