Nginx оптимизация ssl сертификата

Дата | 04.08.2020

nginx оптимизация ssl сертификата
Так как часто спрашивают как настроить https на сервере или как в nginx оптимизация ssl сертификата сайта.
Transport Layer Security (TLS) протокол для защиты веб-страниц, tls заменил собой ssl.
Оптимизируем окружение на сервере для получения максимальной производительности, оптимизация защищенного соединения, повышаем безопасность сервера.

Приступим к оптимизации ssl на сервере.

Кэш сессий и время жизни.
В 50 МБ кэша, помещается около 200000 сессий.

ssl_session_cache shared:SSL:50m;

5 часов хранить сессию.

ssl_session_timeout 5h;

Получаем бесплатный сертификат от letsencrypt.

ssl_certificate /usr/local/etc/letsencrypt/live/site.local/fullchain.pem;
ssl_certificate_key /usr/local/etc/letsencrypt/live/site.local/privkey.pem;
ssl_trusted_certificate /usr/local/etc/letsencrypt/live/site.local/chain.pem;

Создаем dhparam.pem это нужно чтобы заработала прямая секретность (Forward Secrecy).
Если третья сторона узнает сеансовый ключ, то сможет получить доступ к данным защищенным лишь этим ключом.

ssl_dhparam /usr/local/etc/nginx/dhparam.pem;

Актуальные проколы, протоколы TLSv1.0 и TLSv1.1 признаны устаревшими и не безопасными.

ssl_protocols TLSv1.2 TLSv1.3;

Набор разрешенных шифров, поддерживаемом нашим OpenSSL.

ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

Тут убираем приоритет серверных шифров.

ssl_prefer_server_ciphers off;

Отключаем тикеты, они не нужны.

ssl_session_tickets off;

Включаем stapling.
Сервер начинает кэшировать OCSP ответы, этим действием уменьшая время загрузки страниц.
Цепочка сертификатов может содержать 3-4 уровня (доменный — промежуточный центр авторизации — корневой центр авторизации).
Владелец сертификата опрашивает OCSP сервер и после кэширует ответ, который содержит электронную подпись.
Кэшируемый ответ (содержащий ЭП) сшивается с TLS Handshake, через расширение запроса Certificate Status Request.

ssl_stapling on;
ssl_stapling_verify on;

Вместе с ssl_stapling нужно использовать и resolver.
При ssl_stapling происходит обращение к dns, для проверки домена, если используя публичные dns от google к примеру они зависнут, то и вся цепочка зависнет.
Я для этих целей поднял на сервере кешируемый dns.

resolver 127.0.0.1;
resolver_timeout 3s;

Буфер который вы должны сами опытным путем высчитать, параметр подбирается только под ваш проект.
Буфер управляет размером TLS record size, когда браузер клиента получит TLS record полностью, после этого он сможет использовать данные.
Максимальное окно в 16k и это по умолчанию.

ssl_buffer_size 8k;

Говорим браузеру клиента на целый год, что мы принимает только соединения по https на сайте.
Если будет запрос по http и не будит редиректа на сервере на https, то клиентский браузер будит принудительно использовать протокол https.
Так что осторожно с ним параметром.
Обратно тяжело вернуть!

add_header Strict-Transport-Security "max-age=31536000" always;

Вот и вся в nginx оптимизация ssl сертификата у сайта!

Настройка nginx ssl letsencrypt редирект на другой домен.
nginx ssl сертификат от nic.
nginx 301 редирект.
Настройка dnsmasq.
Настройка unbound кэширующий dns.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *