Spec-Zone.ru › nginx

Модуль ngx_http_ssl_module

  • Пример конфигурации
  • Директивы
  • ssl
  • ssl_buffer_size
  • ssl_certificate
  • ssl_certificate_cache
  • ssl_certificate_compression
  • ssl_certificate_key
  • ssl_ciphers
  • ssl_client_certificate
  • ssl_conf_command
  • ssl_crl
  • ssl_dhparam
  • ssl_early_data
  • ssl_ecdh_curve
  • ssl_ech_file
  • ssl_key_log
  • ssl_ocsp
  • ssl_ocsp_cache
  • ssl_ocsp_responder
  • ssl_password_file
  • ssl_prefer_server_ciphers
  • ssl_protocols
  • ssl_reject_handshake
  • ssl_session_cache
  • ssl_session_ticket_key
  • ssl_session_tickets
  • ssl_session_timeout
  • ssl_stapling
  • ssl_stapling_file
  • ssl_stapling_responder
  • ssl_stapling_verify
  • ssl_trusted_certificate
  • ssl_verify_client
  • ssl_verify_depth
  • Обработка ошибок
  • Встроенные переменные

Модуль ngx_http_ssl_module обеспечивает необходимую поддержку HTTPS.

Этот модуль не собирается по умолчанию; его следует включить с помощью параметра конфигурации --with-http_ssl_module.

Для этого модуля требуется библиотека OpenSSL.

Пример конфигурации

Чтобы снизить нагрузку на процессор, рекомендуется

  • установить количество рабочих процессов, равное количеству процессоров,
  • включить соединения keep-alive,
  • включить общий кэш сеансов,
  • отключить встроенный кэш сеансов,
  • а также, возможно, увеличить время жизни сеанса (по умолчанию — 5 минут):
worker_processes auto;

http {

    ...

    server {
        listen              443 ssl;
        keepalive_timeout   70;

        ssl_protocols       TLSv1.2 TLSv1.3;
        ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
        ssl_certificate     /usr/local/nginx/conf/cert.pem;
        ssl_certificate_key /usr/local/nginx/conf/cert.key;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;

        ...
    }

Директивы

Синтаксис: ssl on | off;
Значение по умолчанию: ssl off;
Контекст: http, server

Эта директива устарела в версии 1.15.0 и была удалена в версии 1.25.1. Вместо неё следует использовать параметр ssl директивы listen.

Синтаксис: ssl_buffer_size size;
Значение по умолчанию: ssl_buffer_size 16k;
Контекст: http, server

Эта директива появилась в версии 1.5.9.

Задаёт размер буфера, используемого для отправки данных.

По умолчанию размер буфера составляет 16k, что обеспечивает минимальные накладные расходы при отправке больших ответов. Чтобы сократить время до получения первого байта (Time To First Byte), может быть полезно использовать меньшие значения, например:

ssl_buffer_size 4k;
Синтаксис: ssl_certificate file;
Значение по умолчанию: —
Контекст: http, server

Задаёт file с сертификатом в формате PEM для данного виртуального сервера. Если помимо основного сертификата необходимо указать промежуточные сертификаты, их следует поместить в тот же файл в следующем порядке: сначала основной сертификат, затем промежуточные. В том же файле может быть размещён секретный ключ в формате PEM.

Начиная с версии 1.11.0 эту директиву можно указывать несколько раз, чтобы загрузить сертификаты разных типов, например RSA и ECDSA:

server {
    listen              443 ssl;
    server_name         example.com;

    ssl_certificate     example.com.rsa.crt;
    ssl_certificate_key example.com.rsa.key;

    ssl_certificate     example.com.ecdsa.crt;
    ssl_certificate_key example.com.ecdsa.key;

    ...
}
Только OpenSSL 1.0.2 или выше поддерживает отдельные цепочки сертификатов для разных сертификатов. В более старых версиях можно использовать только одну цепочку сертификатов.

Начиная с версии 1.15.9, при использовании OpenSSL 1.0.2 или выше в имени file можно использовать переменные:

ssl_certificate     $ssl_server_name.crt;
ssl_certificate_key $ssl_server_name.key;

Обратите внимание, что использование переменных означает загрузку сертификата при каждом SSL-рукопожатии, что может отрицательно сказаться на производительности.

Вместо file можно указать значение data:$variable (1.15.10), которое загружает сертификат из переменной без использования промежуточных файлов. Обратите внимание, что неправильное использование этого синтаксиса может повлечь за собой угрозы безопасности, например запись данных секретного ключа в журнал ошибок.

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

Синтаксис: ssl_certificate_cache off;
ssl_certificate_cache max=N [inactive=time] [valid=time];
Значение по умолчанию: ssl_certificate_cache off;
Контекст: http, server

Эта директива появилась в версии 1.27.4.

Определяет кэш, в котором хранятся SSL-сертификаты и секретные ключи, заданные с помощью переменных.

Директива принимает следующие параметры:

max
задаёт максимальное количество элементов в кэше; при переполнении кэша удаляются наименее недавно использовавшиеся (LRU) элементы;
inactive
задаёт время, по истечении которого элемент удаляется из кэша, если в течение этого времени к нему не обращались; по умолчанию — 10 секунд;
valid
задаёт время, в течение которого элемент кэша считается действительным и может использоваться повторно; по умолчанию — 60 секунд. Сертификаты, для которых это время истекло, будут загружены повторно или проверены заново;
off
отключает кэш.

Пример:

ssl_certificate       $ssl_server_name.crt;
ssl_certificate_key   $ssl_server_name.key;
ssl_certificate_cache max=1000 inactive=20s valid=1m;
Синтаксис: ssl_certificate_compression on | off;
Значение по умолчанию: ssl_certificate_compression off;
Контекст: http, server

Эта директива появилась в версии 1.29.1.

Включает сжатие сертификатов сервера в TLS 1.3.

Директива поддерживается при использовании OpenSSL 3.2 или выше; список поддерживаемых алгоритмов сжатия предоставляет библиотека.
Директива поддерживается при использовании BoringSSL; список поддерживаемых алгоритмов сжатия включает zlib (1.29.3).
Синтаксис: ssl_certificate_key file;
Значение по умолчанию: —
Контекст: http, server

Задаёт file с секретным ключом в формате PEM для данного виртуального сервера.

Вместо file можно указать значение engine:name:id (1.7.9), которое загружает секретный ключ с указанным id из движка OpenSSL name.

Вместо file можно указать значение store:scheme:id (1.29.0), которое используется для загрузки секретного ключа с указанным id и URI scheme, зарегистрированным поставщиком OpenSSL, например pkcs11.

Вместо file можно указать значение data:$variable (1.15.10), которое загружает секретный ключ из переменной без использования промежуточных файлов. Обратите внимание, что неправильное использование этого синтаксиса может повлечь за собой угрозы безопасности, например запись данных секретного ключа в журнал ошибок.

Начиная с версии 1.15.9, при использовании OpenSSL 1.0.2 или выше в имени file можно использовать переменные.

Синтаксис: ssl_ciphers ciphers;
Значение по умолчанию: ssl_ciphers HIGH:!aNULL:!MD5;
Контекст: http, server

Задаёт разрешённые шифры. Шифры указываются в формате, понятном библиотеке OpenSSL, например:

ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

Полный список можно просмотреть с помощью команды «openssl ciphers».

В предыдущих версиях nginx по умолчанию использовались другие шифры.
Синтаксис: ssl_client_certificate file;
Значение по умолчанию: —
Контекст: http, server

Задаёт file с доверенными сертификатами CA в формате PEM, используемыми для проверки сертификатов клиентов и ответов OCSP, если включена директива ssl_stapling.

Список сертификатов будет отправлен клиентам. Если этого не требуется, можно использовать директиву ssl_trusted_certificate.

Синтаксис: ssl_conf_command name value;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 1.19.4.

Задаёт произвольные команды конфигурации OpenSSL.

Директива поддерживается при использовании OpenSSL 1.0.2 или выше.

На одном уровне можно указать несколько директив ssl_conf_command:

ssl_conf_command Options PrioritizeChaCha;
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;

Эти директивы наследуются с предыдущего уровня конфигурации только в том случае, если на текущем уровне не определены директивы ssl_conf_command.

Обратите внимание: непосредственная настройка OpenSSL может привести к неожиданному поведению.
Синтаксис: ssl_crl file;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 0.8.7.

Задаёт file с отозванными сертификатами (CRL) в формате PEM, используемый для проверки сертификатов клиентов. При использовании промежуточных сертификатов их списки отзыва следует указать в том же файле.

Синтаксис: ssl_dhparam file;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 0.7.2.

Задаёт file с параметрами DH для шифров DHE.

По умолчанию параметры не заданы, поэтому шифры DHE использоваться не будут.

До версии 1.11.0 по умолчанию использовались встроенные параметры.
Синтаксис: ssl_early_data on | off;
Значение по умолчанию: ssl_early_data off;
Контекст: http, server

Эта директива появилась в версии 1.15.3.

Включает или отключает ранние данные TLS 1.3.

Директива поддерживается при использовании OpenSSL 1.1.1 или выше (1.15.4) и BoringSSL.
Запросы, отправленные в составе ранних данных, подвержены атакам повторного воспроизведения. Для защиты от таких атак на уровне приложения следует использовать переменную $ssl_early_data.
proxy_set_header Early-Data $ssl_early_data;
Встроенная защита OpenSSL от повторного воспроизведения отключена, поскольку она мешает возобновлению сеанса. При необходимости её можно снова включить.
ssl_conf_command Options AntiReplay;
Синтаксис: ssl_ecdh_curve curve;
Значение по умолчанию: ssl_ecdh_curve auto;
Контекст: http, server

Эта директива появилась в версиях 1.1.0 и 1.0.6.

Задаёт curve для шифров ECDHE.

При использовании OpenSSL 1.0.2 или выше можно указать несколько кривых (1.11.0), например:

ssl_ecdh_curve prime256v1:secp384r1;

Специальное значение auto (1.11.0) указывает nginx использовать список, встроенный в библиотеку OpenSSL при использовании OpenSSL 1.0.2 или выше, либо prime256v1 в более старых версиях.

До версии 1.11.0 по умолчанию использовалась кривая prime256v1.
При использовании OpenSSL 1.0.2 или выше эта директива задаёт список кривых, поддерживаемых сервером. Поэтому для работы сертификатов ECDSA важно включить кривые, используемые в сертификатах.
Синтаксис: ssl_ech_file file;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 1.29.4.

Задаёт file с конфигурацией зашифрованного ClientHello (ECHConfig) в формате PEM, используемой для включения TLS 1.3 ECH в общем режиме.

В настоящее время директива поддерживается только при использовании ветки OpenSSL с поддержкой ECH.
Синтаксис: ssl_key_log path;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 1.27.2.

Включает журналирование SSL-ключей клиентских соединений и задаёт путь к файлу журнала ключей. Ключи записываются в формате SSLKEYLOGFILE, совместимом с Wireshark.

Эта директива доступна в рамках нашей коммерческой подписки.
Синтаксис: ssl_ocsp on | off | leaf;
Значение по умолчанию: ssl_ocsp off;
Контекст: http, server

Эта директива появилась в версии 1.19.0.

Включает проверку цепочки сертификатов клиента с помощью OCSP. Параметр leaf включает проверку только сертификата клиента.

Для работы проверки OCSP директива ssl_verify_client должна иметь значение on или optional.

Для разрешения имени узла ответчика OCSP также следует указать директиву resolver.

Пример:

ssl_verify_client on;
ssl_ocsp          on;
resolver          192.0.2.1;
Синтаксис: ssl_ocsp_cache off | [shared:name:size];
Значение по умолчанию: ssl_ocsp_cache off;
Контекст: http, server

Эта директива появилась в версии 1.19.0.

Задаёт name и size кэша, в котором хранятся статусы сертификатов клиентов для проверки OCSP. Кэш является общим для всех рабочих процессов. Кэш с одним и тем же именем можно использовать в нескольких виртуальных серверах.

Параметр off запрещает использование кэша.

Синтаксис: ssl_ocsp_responder url;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 1.19.0.

Переопределяет URL ответчика OCSP, указанный в расширении сертификата «Доступ к информации о центре сертификации», для проверки сертификатов клиентов.

Поддерживаются только «http://»-ответчики OCSP:

ssl_ocsp_responder http://ocsp.example.com/;
Синтаксис: ssl_password_file file;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 1.7.3.

Задаёт file с парольными фразами для секретных ключей; каждая парольная фраза указывается на отдельной строке. При загрузке ключа парольные фразы проверяются по очереди.

Пример:

http {
    ssl_password_file /etc/keys/global.pass;
    ...

    server {
        server_name www1.example.com;
        ssl_certificate_key /etc/keys/first.key;
    }

    server {
        server_name www2.example.com;

        # named pipe can also be used instead of a file
        ssl_password_file /etc/keys/fifo;
        ssl_certificate_key /etc/keys/second.key;
    }
}
Синтаксис: ssl_prefer_server_ciphers on | off;
Значение по умолчанию: ssl_prefer_server_ciphers off;
Контекст: http, server

Указывает, что при использовании протоколов SSLv3 и TLS следует отдавать предпочтение шифрам сервера, а не шифрам клиента.

Синтаксис: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
Значение по умолчанию: ssl_protocols TLSv1.2 TLSv1.3;
Контекст: http, server

Включает указанные протоколы.

Если директива указана на уровне server, можно использовать значение из сервера по умолчанию. Подробности приведены в разделе «Выбор виртуального сервера».

Параметры TLSv1.1 и TLSv1.2 (1.1.13, 1.0.12) работают только при использовании OpenSSL 1.0.1 или выше.
Параметр TLSv1.3 (1.13.0) работает только при использовании OpenSSL 1.1.1 или выше.
Параметр TLSv1.3 используется по умолчанию начиная с версии 1.23.4.
Синтаксис: ssl_reject_handshake on | off;
Значение по умолчанию: ssl_reject_handshake off;
Контекст: http, server

Эта директива появилась в версии 1.19.4.

Если директива включена, SSL-рукопожатия в блоке server будут отклоняться.

Например, в следующей конфигурации отклоняются SSL-рукопожатия с именами серверов, отличными от example.com:

server {
    listen               443 ssl default_server;
    ssl_reject_handshake on;
}

server {
    listen              443 ssl;
    server_name         example.com;
    ssl_certificate     example.com.crt;
    ssl_certificate_key example.com.key;
}
Синтаксис: ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
Значение по умолчанию: ssl_session_cache none;
Контекст: http, server

Задаёт типы и размеры кэшей, в которых хранятся параметры сеансов. Кэш может иметь один из следующих типов:

off
использование кэша сеансов строго запрещено: nginx явно сообщает клиенту, что повторное использование сеансов невозможно.
none
использование кэша сеансов не рекомендуется: nginx сообщает клиенту, что сеансы можно повторно использовать, но фактически не сохраняет параметры сеансов в кэше.
builtin
кэш, встроенный в OpenSSL; используется только одним рабочим процессом. Размер кэша задаётся в количестве сеансов. Если размер не указан, он равен 20480 сеансам. Использование встроенного кэша может привести к фрагментации памяти.
shared
кэш, общий для всех рабочих процессов. Размер кэша задаётся в байтах; в одном мегабайте помещается около 4000 сеансов. Каждому общему кэшу следует присвоить произвольное имя. Кэш с одним и тем же именем можно использовать в нескольких виртуальных серверах. Он также используется для автоматической генерации, хранения и периодической ротации ключей билетов сеанса TLS (1.23.2), если они явно не настроены с помощью директивы ssl_session_ticket_key.

Оба типа кэша можно использовать одновременно, например:

ssl_session_cache builtin:1000 shared:SSL:10m;

однако более эффективным должно быть использование только общего кэша без встроенного.

Синтаксис: ssl_session_ticket_key file;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 1.5.7.

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

Если указано несколько ключей, для шифрования билетов сеансов TLS используется только первый. Это позволяет настроить ротацию ключей, например:

ssl_session_ticket_key current.key;
ssl_session_ticket_key previous.key;

file должен содержать 80 или 48 байт случайных данных; его можно создать с помощью следующей команды:

openssl rand 80 > ticket.key

В зависимости от размера файла для шифрования используется AES256 (для ключей размером 80 байт, 1.11.8) или AES128 (для ключей размером 48 байт).

Синтаксис: ssl_session_tickets on | off;
Значение по умолчанию: ssl_session_tickets on;
Контекст: http, server

Эта директива появилась в версии 1.5.9.

Включает или отключает возобновление сеанса с помощью билетов сеансов TLS.

Синтаксис: ssl_session_timeout time;
Значение по умолчанию: ssl_session_timeout 5m;
Контекст: http, server

Задаёт время, в течение которого клиент может повторно использовать параметры сеанса.

Синтаксис: ssl_stapling on | off;
Значение по умолчанию: ssl_stapling off;
Контекст: http, server

Эта директива появилась в версии 1.3.7.

Включает или отключает передачу сервером OCSP-ответов в составе рукопожатия. Пример:

ssl_stapling on;
resolver 192.0.2.1;

Для работы OCSP stapling необходимо знать сертификат издателя сертификата сервера. Если файл ssl_certificate не содержит промежуточных сертификатов, сертификат издателя сертификата сервера следует поместить в файл ssl_trusted_certificate.

Для разрешения имени узла ответчика OCSP также следует указать директиву resolver.

Синтаксис: ssl_stapling_file file;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 1.3.7.

Если задано, OCSP-ответ для stapling будет взят из указанного file, а не запрошен у ответчика OCSP, заданного в сертификате сервера.

Файл должен быть в формате DER, полученном с помощью команды «openssl ocsp».

Синтаксис: ssl_stapling_responder url;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 1.3.7.

Переопределяет URL ответчика OCSP, указанный в расширении сертификата «Доступ к информации о центре сертификации».

Поддерживаются только «http://»-ответчики OCSP:

ssl_stapling_responder http://ocsp.example.com/;
Синтаксис: ssl_stapling_verify on | off;
Значение по умолчанию: ssl_stapling_verify off;
Контекст: http, server

Эта директива появилась в версии 1.3.7.

Включает или отключает проверку сервером OCSP-ответов.

Для работы проверки сертификат издателя сертификата сервера, корневой сертификат и все промежуточные сертификаты должны быть настроены как доверенные с помощью директивы ssl_trusted_certificate.

Синтаксис: ssl_trusted_certificate file;
Значение по умолчанию: —
Контекст: http, server

Эта директива появилась в версии 1.3.7.

Задаёт file с доверенными сертификатами CA в формате PEM, используемыми для проверки сертификатов клиентов и ответов OCSP, если включена директива ssl_stapling.

В отличие от сертификатов, заданных директивой ssl_client_certificate, список этих сертификатов не будет отправлен клиентам.

Синтаксис: ssl_verify_client on | off | optional | optional_no_ca;
Значение по умолчанию: ssl_verify_client off;
Контекст: http, server

Включает проверку сертификатов клиентов. Результат проверки сохраняется в переменной $ssl_client_verify.

Параметр optional (0.8.7+) запрашивает сертификат клиента и проверяет его, если сертификат предоставлен.

Параметр optional_no_ca (1.3.8, 1.2.5) запрашивает сертификат клиента, но не требует, чтобы он был подписан доверенным сертификатом CA. Это предназначено для случаев, когда фактическую проверку сертификата выполняет служба, внешняя по отношению к nginx. Содержимое сертификата доступно через переменную $ssl_client_cert.

Синтаксис: ssl_verify_depth number;
Значение по умолчанию: ssl_verify_depth 1;
Контекст: http, server

Задаёт глубину проверки цепочки сертификатов клиента.

Обработка ошибок

Модуль ngx_http_ssl_module поддерживает несколько нестандартных кодов ошибок, которые можно использовать для перенаправлений с помощью директивы error_page:

495
произошла ошибка при проверке сертификата клиента;
496
клиент не предоставил требуемый сертификат;
497
обычный запрос отправлен на порт HTTPS.

Перенаправление выполняется после полного разбора запроса, когда становятся доступны переменные, такие как $request_uri, $uri, $args и другие.

Встроенные переменные

Модуль ngx_http_ssl_module поддерживает встроенные переменные:

$ssl_alpn_protocol
возвращает протокол, выбранный с помощью ALPN во время SSL-рукопожатия, или пустую строку в противном случае (1.21.4);
$ssl_cipher
возвращает название шифра, использованного для установленного SSL-соединения;
$ssl_ciphers
возвращает список шифров, поддерживаемых клиентом (1.11.7). Известные шифры перечислены по именам, неизвестные отображаются в шестнадцатеричном формате, например:
AES128-SHA:AES256-SHA:0x00ff
Переменная полностью поддерживается только при использовании OpenSSL версии 1.0.2 или выше. В более ранних версиях переменная доступна только для новых сеансов и перечисляет только известные шифры.
$ssl_client_escaped_cert
возвращает сертификат клиента в формате PEM (с URL-кодированием) для установленного SSL-соединения (1.13.5);
$ssl_client_cert
возвращает сертификат клиента в формате PEM для установленного SSL-соединения; перед каждой строкой, кроме первой, добавляется символ табуляции. Предназначено для использования в директиве proxy_set_header;
Переменная устарела, вместо неё следует использовать переменную $ssl_client_escaped_cert.
$ssl_client_fingerprint
возвращает SHA1-отпечаток сертификата клиента для установленного SSL-соединения (1.7.1);
$ssl_client_i_dn
возвращает строку «DN издателя» сертификата клиента для установленного SSL-соединения в соответствии с RFC 2253 (1.11.6);
$ssl_client_i_dn_legacy
возвращает строку «DN издателя» сертификата клиента для установленного SSL-соединения;
До версии 1.11.6 имя переменной было $ssl_client_i_dn.
$ssl_client_raw_cert
возвращает сертификат клиента в формате PEM для установленного SSL-соединения;
$ssl_client_s_dn
возвращает строку «DN субъекта» сертификата клиента для установленного SSL-соединения в соответствии с RFC 2253 (1.11.6);
$ssl_client_s_dn_legacy
возвращает строку «DN субъекта» сертификата клиента для установленного SSL-соединения;
До версии 1.11.6 имя переменной было $ssl_client_s_dn.
$ssl_client_serial
возвращает серийный номер сертификата клиента для установленного SSL-соединения;
$ssl_client_sigalg
возвращает алгоритм подписи сертификата клиента для установленного SSL-соединения (1.29.3).
Переменная поддерживается только при использовании OpenSSL версии 3.5 или выше. В более ранних версиях значение переменной будет пустой строкой.
Переменная доступна только для новых сеансов.
$ssl_client_v_end
возвращает дату окончания срока действия сертификата клиента (1.11.7);
$ssl_client_v_remain
возвращает количество дней до истечения срока действия сертификата клиента (1.11.7);
$ssl_client_v_start
возвращает дату начала срока действия сертификата клиента (1.11.7);
$ssl_client_verify
возвращает результат проверки сертификата клиента: «SUCCESS», «FAILED:reason» и «NONE», если сертификат отсутствовал;
До версии 1.11.7 результат «FAILED» не содержал строку reason.
$ssl_curve
возвращает согласованную эллиптическую кривую, используемую для обмена ключами во время SSL-рукопожатия (1.21.5). Известные кривые перечислены по именам, неизвестные отображаются в шестнадцатеричном формате, например:
prime256v1
Переменная поддерживается только при использовании OpenSSL версии 3.0 или выше. В более ранних версиях значение переменной будет пустой строкой.
$ssl_curves
возвращает список кривых, поддерживаемых клиентом (1.11.7). Известные кривые перечислены по именам, неизвестные отображаются в шестнадцатеричном формате, например:
0x001d:prime256v1:secp521r1:secp384r1
Переменная поддерживается только при использовании OpenSSL версии 1.0.2 или выше. В более ранних версиях значение переменной будет пустой строкой.
Переменная доступна только для новых сеансов.
$ssl_early_data
возвращает «1», если используются ранние данные TLS 1.3 и рукопожатие ещё не завершено, в противном случае возвращает «» (1.15.3).
$ssl_ech_outer_server_name
возвращает общедоступное имя сервера, запрошенное через SNI, если ECH TLS 1.3 был принят, в противном случае возвращает «» (1.29.4);
$ssl_ech_status
возвращает результат обработки ECH TLS 1.3: «FAILED», «BACKEND», «GREASE», «SUCCESS» или «NOT_TRIED» (1.29.4);
В настоящее время переменная поддерживается только при использовании ветки OpenSSL с поддержкой ECH, поэтому её поведение может измениться. В противном случае значение переменной будет пустой строкой.
$ssl_protocol
возвращает протокол установленного SSL-соединения;
$ssl_server_name
возвращает имя сервера, запрошенное через SNI (1.7.0);
$ssl_session_id
возвращает идентификатор сеанса установленного SSL-соединения;
$ssl_session_reused
возвращает «r», если SSL-сеанс был повторно использован, или «.» в противном случае (1.5.11).
$ssl_sigalg
возвращает алгоритм подписи сертификата сервера для установленного SSL-соединения (1.29.3).
Переменная поддерживается только при использовании OpenSSL версии 3.5 или выше. В более ранних версиях значение переменной будет пустой строкой.
Переменная доступна только для новых сеансов.

© 2002-2021 Igor Sysoev
© 2011-2026 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_ssl_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API