TLS Nginx

При установке SSL сертификата на сервер в конфигурационном файле прописываются параметры, отвечающие за шифрование на самом деле для него применяется не SSL, а более современный протокол TLS.  TLS Nginx в полной мере поддерживается, современные сертификаты работают по протоколу TLS1.2.

TLS — протокол безопасности, пришедший на смену SSL, хотя SSL употребляется намного чаще фактически почти всегда речь при этом идет про TLS

 

 

TLS Nginx и настройка безопасной работы с сервером

Любое шифрование применяется для того чтобы не допустить доступа к информации кого-либо, кто доступа к ней иметь не должен. TLS обеспечивается такое шифрование.

Просмотрев часть конфигурационного файла конфигурационного хоста, относящуюся к SSL/TLS можно увидеть, что подключаются файлы сертификаты безопасности, перечисляются поддерживаемые версии TLS, а также задаются шифры и некоторые дополнительные опции.

 

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA512:EECDH+ECDSA
+SHA384:EECDH+ECDSA+SHA256:ECDH+
AESGCM:ECDH+AES256:DH+AESGCM:DH+AES256:RSA+AESGCM:!aNULL:!eNULL
:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;

Шифры указываются в одну строку после обозначения директивы ssl_ciphers и перечисляются в формате, в котором распознаются библиотекой OpenSSL (*в тексте выше для лучшей читаемости добавлены переносы, если их сохранить в конфигурационном файле Nginx при перезапуске будет выдавать ошибки).

 

 

 

SSL-операции потребляют дополнительные ресурсы процессора, часто довольно значительные. Но существуют способы оптимизации.
  • Прежде всего это использование нескольких воркеров.
  • Кроме этого есть возможность оптимизации для каждого клиента, в Nginx доступны 2 способа:
    keepalive соединения, позволяющих в рамках одного соединения обрабатывать сразу несколько запросов, прописывается в секции server конфигурационного файла в виде:

server {
listen 443 ssl;

server_name example.com;
keepalive_timeout 70;
..
}

  • повторное использование параметров сессии SSL- это позволяет не повторять SSL handshake каждый раз. Задается директивой ssl_session_cache как в примере (сюда же относится ssl_session_timeout, определяющий таймаут для сессий в кэше). В 1 мегабайт кэша помещается около 4000 сессий.

 

 

ssl_stapling on разрешает прикрепление OCSP-ответов сервером. OSCP — протокол, который может быть использован со стороны клиента для проверки серверных сертифкатов.  Протокол позволяет проверить актуальность сертификата и срок его действия, для проверки посылается запрос на OSCP-сервер, хранящий данные, современная реализация (CRL) позволяет сохранять результаты вместе с сессиями (более того сервер при использовании CRL будет самостоятельно опрашивать OSCP источник и выяснить не истек ли сертификат), это исключает задержки на получение ответа от OSCP-сервера при каждом обращении.

 

 

Использование протокола Диффи-Хеллмана

Также для шифрования протокол при установке сертификата на Nginx часто применяют ключ, сгенерированный по алгоритму Диффи-Хеллмана, он генерируется в консоли и подключается в конфигурационном файле сайта вместе с сертификатом и приватным ключем для домена.

openssl dhparam -out /etc/ssl/example.com.pem 2048



Читайте материал про установку SSL сертификата на Nginx. Установка сертификата является практической задачей при решении которой используются рассмотренные параметры.