Path: blob/main/xml/ru/docs/stream/ngx_stream_ssl_module.xml
1 views
<?xml version="1.0"?>12<!--3Copyright (C) Nginx, Inc.4-->56<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">78<module name="Модуль ngx_stream_ssl_module"9link="/ru/docs/stream/ngx_stream_ssl_module.html"10lang="ru"11rev="47">1213<section id="summary">1415<para>16Модуль <literal>ngx_stream_ssl_module</literal> (1.9.0)17обеспечивает необходимую поддержку для работы18прокси-сервера по протоколу SSL/TLS.19</para>2021<para>22По умолчанию этот модуль не собирается, его сборку необходимо23разрешить с помощью конфигурационного параметра24<literal>--with-stream_ssl_module</literal>.25<note>26Для сборки и работы этого модуля нужна библиотека27<link url="http://www.openssl.org">OpenSSL</link>.28</note>29</para>3031</section>323334<section id="example" name="Пример конфигурации">3536<para>37Для уменьшения загрузки процессора рекомендуется38<list type="bullet">3940<listitem>41установить число42<link doc="../ngx_core_module.xml" id="worker_processes">рабочих процессов</link>43равным числу процессоров,44</listitem>4546<listitem>47включить <link id="ssl_session_cache_shared">разделяемый</link> кэш сессий,48</listitem>4950<listitem>51выключить <link id="ssl_session_cache_builtin">встроенный</link> кэш сессий52</listitem>5354<listitem>55и, возможно, увеличить <link id="ssl_session_timeout">время жизни</link> сессии56(по умолчанию 5 минут):57</listitem>5859</list>6061<example>62<emphasis>worker_processes auto;</emphasis>6364stream {6566...6768server {69listen 12345 ssl;7071ssl_protocols TLSv1.2 TLSv1.3;72ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;73ssl_certificate /usr/local/nginx/conf/cert.pem;74ssl_certificate_key /usr/local/nginx/conf/cert.key;75<emphasis>ssl_session_cache shared:SSL:10m;</emphasis>76<emphasis>ssl_session_timeout 10m;</emphasis>7778...79}80</example>81</para>8283</section>848586<section id="directives" name="Директивы">8788<directive name="ssl_alpn">89<syntax><value>протокол</value> ...</syntax>90<default/>91<context>stream</context>92<context>server</context>93<appeared-in>1.21.4</appeared-in>9495<para>96Задаёт список поддерживаемых97протоколов98<link url="https://datatracker.ietf.org/doc/html/rfc7301">ALPN</link>.99Один из протоколов должен быть100<link id="var_ssl_alpn_protocol">согласован</link>, если клиент использует ALPN:101<example>102map $ssl_alpn_protocol $proxy {103h2 127.0.0.1:8001;104http/1.1 127.0.0.1:8002;105}106107server {108listen 12346;109proxy_pass $proxy;110ssl_alpn h2 http/1.1;111}112</example>113</para>114115</directive>116117118<directive name="ssl_certificate">119<syntax><value>файл</value></syntax>120<default/>121<context>stream</context>122<context>server</context>123124<para>125Указывает <value>файл</value> с сертификатом в формате PEM126для данного виртуального сервера.127Если вместе с основным сертификатом нужно указать промежуточные,128то они должны находиться в этом же файле в следующем порядке: сначала129основной сертификат, а затем промежуточные.130В этом же файле может находиться секретный ключ в формате PEM.131</para>132133<para>134Начиная с версии 1.11.0135эта директива может быть указана несколько раз136для загрузки сертификатов разных типов, например RSA и ECDSA:137<example>138server {139listen 12345 ssl;140141ssl_certificate example.com.rsa.crt;142ssl_certificate_key example.com.rsa.key;143144ssl_certificate example.com.ecdsa.crt;145ssl_certificate_key example.com.ecdsa.key;146147...148}149</example>150<note>151Возможность задавать отдельные152<link doc="../http/configuring_https_servers.xml" id="chains">цепочки153сертификатов</link>154для разных сертификатов155есть только в OpenSSL 1.0.2 и выше.156Для более старых версий следует указывать только одну цепочку сертификатов.157</note>158</para>159160<para id="ssl_certificate_variables">161Начиная с версии 1.15.9 в имени файла можно использовать переменные162при использовании OpenSSL 1.0.2 и выше:163<example>164ssl_certificate $ssl_server_name.crt;165ssl_certificate_key $ssl_server_name.key;166</example>167Однако нужно учитывать, что при использовании переменных168сертификат загружается при каждой операции SSL handshake,169что может отрицательно влиять на производительность.170</para>171172<para id="ssl_certificate_data">173Вместо <value>файла</value> можно указать значение174<literal>data</literal>:<value>$переменная</value> (1.15.10),175при котором сертификат загружается из переменной176без использования промежуточных файлов.177При этом следует учитывать, что ненадлежащее использование178подобного синтаксиса может быть небезопасно,179например данные секретного ключа могут попасть в180<link doc="../ngx_core_module.xml" id="error_log">лог ошибок</link>.181</para>182183<para>184Нужно иметь в виду, что из-за ограничения протокола SSL/TLS185для максимальной совместимости с клиентами, которые не используют186<link url="http://en.wikipedia.org/wiki/Server_Name_Indication">SNI</link>,187виртуальные серверы с разными сертификатами должны слушать на188<link doc="../http/configuring_https_servers.xml"189id="name_based_https_servers">разных190IP-адресах</link>.191</para>192193</directive>194195196<directive name="ssl_certificate_cache">197<syntax><literal>off</literal></syntax>198<syntax>199<literal>max</literal>=<value>N</value>200[<literal>inactive</literal>=<value>время</value>]201[<literal>valid</literal>=<value>время</value>]</syntax>202<default>off</default>203<context>stream</context>204<context>server</context>205<appeared-in>1.27.4</appeared-in>206207<para>208Задаёт кэш, в котором могут храниться209<link id="ssl_certificate">SSL-сертификаты</link> и210<link id="ssl_certificate_key">секретные ключи</link>,211полученные из <link id="ssl_certificate_key_variables">переменных</link>.212</para>213214<para>215У директивы есть следующие параметры:216<list type="tag">217218<tag-name id="ssl_certificate_cache_max">219<literal>max</literal>220</tag-name>221<tag-desc>222задаёт максимальное число элементов в кэше;223при переполнении кэша удаляются наименее востребованные элементы (LRU);224</tag-desc>225226<tag-name id="ssl_certificate_cache_inactive">227<literal>inactive</literal>228</tag-name>229<tag-desc>230задаёт время, после которого элемент кэша удаляется,231если к нему не было обращений в течение этого времени;232по умолчанию 10 секунд;233</tag-desc>234235<tag-name id="ssl_certificate_cache_valid">236<literal>valid</literal>237</tag-name>238<tag-desc>239задает время, в течение которого240элемент кэша считается действительным241и может быть повторно использован,242по умолчанию 60 секунд.243По завершении этого времени сертификат будет обновлён или повторно проверен;244</tag-desc>245246<tag-name id="ssl_certificate_cache_off">247<literal>off</literal>248</tag-name>249<tag-desc>250запрещает кэш.251</tag-desc>252253</list>254</para>255256<para>257Пример:258<example>259ssl_certificate $ssl_server_name.crt;260ssl_certificate_key $ssl_server_name.key;261ssl_certificate_cache max=1000 inactive=20s valid=1m;262</example>263</para>264265</directive>266267268<directive name="ssl_certificate_compression">269<syntax><literal>on</literal> | <literal>off</literal></syntax>270<default>off</default>271<context>stream</context>272<context>server</context>273<appeared-in>1.29.1</appeared-in>274275<para>276Разрешает277<link url="https://datatracker.ietf.org/doc/html/rfc8879">сжатие</link>278серверных сертификатов при использовании TLS 1.3.279<note>280Директива поддерживается при использовании OpenSSL 3.2 и выше;281список поддерживаемых алгоритмов сжатия обеспечивается библиотекой.282</note>283<note>284Директива поддерживается при использовании BoringSSL;285список поддерживаемых алгоритмов сжатия включает286<literal>zlib</literal> (1.29.3).287</note>288</para>289290</directive>291292293<directive name="ssl_certificate_key">294<syntax><value>файл</value></syntax>295<default/>296<context>stream</context>297<context>server</context>298299<para>300Указывает <value>файл</value> с секретным ключом в формате PEM301для данного виртуального сервера.302</para>303304<para>305Вместо <value>файла</value> можно указать значение306<literal>engine</literal>:<value>имя</value>:<value>id</value>,307которое загружает ключ с указанным <value>id</value>308из OpenSSL engine с заданным <value>именем</value>.309</para>310311<para>312Вместо <value>файла</value> можно указать значение313<literal>store</literal>:<value>схема</value>:<value>id</value> (1.29.0),314которое используется для загрузки ключа с указанным <value>id</value>315и зарегистрированной провайдером OpenSSL <value>схемой</value> URI, такой как316<link url="https://datatracker.ietf.org/doc/html/rfc7512"><literal>pkcs11</literal></link>.317</para>318319<para id="ssl_certificate_key_data">320Вместо <value>файла</value> можно указать значение321<literal>data</literal>:<value>$переменная</value> (1.15.10),322при котором секретный ключ загружается из переменной323без использования промежуточных файлов.324При этом следует учитывать, что ненадлежащее использование325подобного синтаксиса может быть небезопасно,326например данные секретного ключа могут попасть в327<link doc="../ngx_core_module.xml" id="error_log">лог ошибок</link>.328</para>329330<para id="ssl_certificate_key_variables">331Начиная с версии 1.15.9 в имени файла можно использовать переменные332при использовании OpenSSL 1.0.2 и выше.333</para>334335</directive>336337338<directive name="ssl_ciphers">339<syntax><value>шифры</value></syntax>340<default>HIGH:!aNULL:!MD5</default>341<context>stream</context>342<context>server</context>343344<para>345Описывает разрешённые шифры.346Шифры задаются в формате, поддерживаемом библиотекой347OpenSSL, например:348<example>349ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;350</example>351</para>352353<para>354Полный список можно посмотреть с помощью команды355“<command>openssl ciphers</command>”.356</para>357358</directive>359360361<directive name="ssl_client_certificate">362<syntax><value>файл</value></syntax>363<default/>364<context>stream</context>365<context>server</context>366<appeared-in>1.11.8</appeared-in>367368<para>369Указывает <value>файл</value> с доверенными сертификатами CA в формате370PEM, которые используются для371<link id="ssl_verify_client">проверки</link> клиентских сертификатов и372ответов OCSP, если включён <link id="ssl_stapling"/>.373</para>374375<para>376Список сертификатов будет отправляться клиентам.377Если это нежелательно, можно воспользоваться директивой378<link id="ssl_trusted_certificate"/>.379</para>380381</directive>382383384<directive name="ssl_conf_command">385<syntax><value>имя</value> <value>значение</value></syntax>386<default/>387<context>stream</context>388<context>server</context>389<appeared-in>1.19.4</appeared-in>390391<para>392Задаёт произвольные конфигурационные393<link url="https://www.openssl.org/docs/man1.1.1/man3/SSL_CONF_cmd.html">команды</link>394OpenSSL.395<note>396Директива поддерживается при использовании OpenSSL 1.0.2 и выше.397</note>398</para>399400<para>401На одном уровне может быть указано402несколько директив <literal>ssl_conf_command</literal>:403<example>404ssl_conf_command Options PrioritizeChaCha;405ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;406</example>407Директивы наследуются с предыдущего уровня конфигурации при условии, что408на данном уровне не описаны свои директивы <literal>ssl_conf_command</literal>.409</para>410411<para>412<note>413Следует учитывать, что изменение настроек OpenSSL напрямую414может привести к неожиданному поведению.415</note>416</para>417418</directive>419420421<directive name="ssl_crl">422<syntax><value>файл</value></syntax>423<default/>424<context>stream</context>425<context>server</context>426<appeared-in>1.11.8</appeared-in>427428<para>429Указывает <value>файл</value> с отозванными сертификатами (CRL)430в формате PEM, используемыми для431<link id="ssl_verify_client">проверки</link> клиентских сертификатов.432Если используются промежуточные сертификаты,433их списки CRL должны находиться в этом же файле.434</para>435436</directive>437438439<directive name="ssl_dhparam">440<syntax><value>файл</value></syntax>441<default/>442<context>stream</context>443<context>server</context>444445<para>446Указывает <value>файл</value> с параметрами для DHE-шифров.447</para>448449<para>450По умолчанию параметры не заданы,451и соответственно DHE-шифры не будут использоваться.452<note>453До версии 1.11.0 по умолчанию использовались встроенные параметры.454</note>455</para>456457</directive>458459460<directive name="ssl_ecdh_curve">461<syntax><value>кривая</value></syntax>462<default>auto</default>463<context>stream</context>464<context>server</context>465466<para>467Задаёт кривую для ECDHE-шифров.468</para>469470<para>471При использовании OpenSSL 1.0.2 и выше472можно указывать несколько кривых (1.11.0), например:473<example>474ssl_ecdh_curve prime256v1:secp384r1;475</example>476</para>477478<para>479Специальное значение <literal>auto</literal> (1.11.0) соответствует480встроенному в библиотеку OpenSSL списку кривых для OpenSSL 1.0.2 и выше,481или <literal>prime256v1</literal> для более старых версий.482</para>483484<para>485<note>486До версии 1.11.0487по умолчанию использовалась кривая <literal>prime256v1</literal>.488</note>489</para>490491<para>492<note>493При использовании OpenSSL 1.0.2 и выше494директива задаёт список кривых, поддерживаемых сервером.495Поэтому для работы ECDSA-сертификатов496важно, чтобы список включал кривые, используемые в сертификатах.497</note>498</para>499500</directive>501502503<directive name="ssl_ech_file">504<syntax><value>file</value></syntax>505<default/>506<context>stream</context>507<context>server</context>508<appeared-in>1.29.4</appeared-in>509510<para>511Задаёт <value>файл</value> с конфигурацией Encrypted ClientHello512(<literal>ECHConfig</literal>) в формате513<link url="https://datatracker.ietf.org/doc/draft-farrell-tls-pemesni/">PEM</link>,514используемой для включения TLS 1.3515<link url="https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni">ECH</link>516в shared-режиме.517</para>518519<para>520<note>521В настоящее время директива поддерживается только при использовании522<link url="https://github.com/openssl/openssl/tree/feature/ech">ветки523разработки ECH</link> OpenSSL.524</note>525</para>526527</directive>528529530<directive name="ssl_handshake_timeout">531<syntax><value>время</value></syntax>532<default>60s</default>533<context>stream</context>534<context>server</context>535536<para>537Задаёт таймаут для завершения операции SSL handshake.538</para>539540</directive>541542543<directive name="ssl_key_log">544<syntax>путь</syntax>545<default/>546<context>stream</context>547<context>server</context>548<appeared-in>1.27.2</appeared-in>549550<para>551Включает логирование SSL-ключей клиентских соединений552и указывает путь к лог-файлу ключей.553Ключи записываются в формате554<link url="https://datatracker.ietf.org/doc/html/draft-ietf-tls-keylogfile">SSLKEYLOGFILE</link>555совместимом с Wireshark.556</para>557558<para>559<note>560Директива доступна как часть561<commercial_version>коммерческой подписки</commercial_version>.562</note>563</para>564565</directive>566567568<directive name="ssl_ocsp">569<syntax><literal>on</literal> |570<literal>off</literal> |571<literal>leaf</literal></syntax>572<default>off</default>573<context>stream</context>574<context>server</context>575<appeared-in>1.27.2</appeared-in>576577<para>578Включает проверку OCSP для цепочки клиентских сертификатов.579Параметр <literal>leaf</literal>580включает проверку только клиентского сертификата.581</para>582583<para>584Для работы проверки OCSP585необходимо дополнительно установить значение директивы586<link id="ssl_verify_client"/> в587<literal>on</literal> или <literal>optional</literal>.588</para>589590<para>591Для преобразования имени хоста OCSP responder’а в адрес необходимо592дополнительно задать директиву593<link doc="ngx_stream_core_module.xml" id="resolver"/>.594</para>595596<para>597Пример:598<example>599ssl_verify_client on;600ssl_ocsp on;601resolver 192.0.2.1;602</example>603</para>604605</directive>606607608<directive name="ssl_ocsp_cache">609<syntax>610<literal>off</literal> |611[<literal>shared</literal>:<value>имя</value>:<value>размер</value>]</syntax>612<default>off</default>613<context>stream</context>614<context>server</context>615<appeared-in>1.27.2</appeared-in>616617<para>618Задаёт <literal>имя</literal> и <literal>размер</literal> кэша,619который хранит статус клиентских сертификатов для проверки OCSP-ответов.620Кэш разделяется между всеми рабочими процессами.621Кэш с одинаковым названием может использоваться в нескольких622виртуальных серверах.623</para>624625<para>626Параметр <literal>off</literal> запрещает использование кэша.627</para>628629</directive>630631632<directive name="ssl_ocsp_responder">633<syntax><value>url</value></syntax>634<default/>635<context>stream</context>636<context>server</context>637<appeared-in>1.27.2</appeared-in>638639<para>640Переопределяет URL OCSP responder’а, указанный в расширении сертификата641“<link url="https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.2.1">Authority642Information Access</link>”643для <link id="ssl_ocsp">проверки</link> клиентских сертификатов.644</para>645646<para>647Поддерживаются только “<literal>http://</literal>” OCSP responder’ы:648<example>649ssl_ocsp_responder http://ocsp.example.com/;650</example>651</para>652653</directive>654655656<directive name="ssl_password_file">657<syntax><value>файл</value></syntax>658<default/>659<context>stream</context>660<context>server</context>661662<para>663Задаёт <value>файл</value> с паролями от664<link id="ssl_certificate_key">секретных ключей</link>,665где каждый пароль указан на отдельной строке.666Пароли применяются по очереди в момент загрузки ключа.667</para>668669<para>670Пример:671<example>672stream {673ssl_password_file /etc/keys/global.pass;674...675676server {677listen 127.0.0.1:12345;678ssl_certificate_key /etc/keys/first.key;679}680681server {682listen 127.0.0.1:12346;683684# вместо файла можно указать именованный канал685ssl_password_file /etc/keys/fifo;686ssl_certificate_key /etc/keys/second.key;687}688}689</example>690</para>691692</directive>693694695<directive name="ssl_prefer_server_ciphers">696<syntax><literal>on</literal> | <literal>off</literal></syntax>697<default>off</default>698<context>stream</context>699<context>server</context>700701<para>702Указывает, чтобы при использовании протоколов SSLv3 и TLS703серверные шифры были более приоритетны, чем клиентские.704</para>705706</directive>707708709<directive name="ssl_protocols">710<syntax>711[<literal>SSLv2</literal>]712[<literal>SSLv3</literal>]713[<literal>TLSv1</literal>]714[<literal>TLSv1.1</literal>]715[<literal>TLSv1.2</literal>]716[<literal>TLSv1.3</literal>]</syntax>717<default>TLSv1.2 TLSv1.3</default>718<context>stream</context>719<context>server</context>720721<para>722Разрешает указанные протоколы.723</para>724725<para>726Если директива указана727на уровне <link doc="ngx_stream_core_module.xml" id="server"/>,728то может использоваться значение из сервера по умолчанию.729Подробнее см. в разделе730“<link doc="../http/server_names.xml" id="virtual_server_selection">Выбор731виртуального сервера</link>”.732</para>733734<para>735<note>736Параметры <literal>TLSv1.1</literal> и <literal>TLSv1.2</literal>737работают только при использовании OpenSSL 1.0.1 и выше.738</note>739<note>740Параметр <literal>TLSv1.3</literal> (1.13.0) работает только741при использовании OpenSSL 1.1.1 и выше.742</note>743<note>744Параметр <literal>TLSv1.3</literal> используется по умолчанию745начиная с 1.23.4.746</note>747</para>748749</directive>750751752<directive name="ssl_reject_handshake">753<syntax><literal>on</literal> | <literal>off</literal></syntax>754<default>off</default>755<context>stream</context>756<context>server</context>757<appeared-in>1.25.5</appeared-in>758759<para>760Если разрешено, то операции SSL handshake в761блоке <link doc="ngx_stream_core_module.xml" id="server"/> будут отклонены.762</para>763764<para>765Например в этой конфигурации отклоняются все операции SSL handshake с766именем сервера, отличным от <literal>example.com</literal>:767<example>768server {769listen 443 ssl default_server;770ssl_reject_handshake on;771}772773server {774listen 443 ssl;775server_name example.com;776ssl_certificate example.com.crt;777ssl_certificate_key example.com.key;778}779</example>780</para>781782</directive>783784785<directive name="ssl_session_cache">786<syntax>787<literal>off</literal> |788<literal>none</literal> |789[<literal>builtin</literal>[:<value>размер</value>]]790[<literal>shared</literal>:<value>название</value>:<value>размер</value>]</syntax>791<default>none</default>792<context>stream</context>793<context>server</context>794795<para>796Задаёт тип и размеры кэшей для хранения параметров сессий.797Тип кэша может быть следующим:798<list type="tag">799800<tag-name><literal>off</literal></tag-name>801<tag-desc>802жёсткое запрещение использования кэша сессий:803nginx явно сообщает клиенту, что сессии не могут использоваться повторно.804</tag-desc>805806<tag-name><literal>none</literal></tag-name>807<tag-desc>808мягкое запрещение использования кэша сессий:809nginx сообщает клиенту, что сессии могут использоваться повторно, но810на самом деле не хранит параметры сессии в кэше.811</tag-desc>812813<tag-name id="ssl_session_cache_builtin"><literal>builtin</literal></tag-name>814<tag-desc>815встроенный в OpenSSL кэш, используется в рамках только одного рабочего процесса.816Размер кэша задаётся в сессиях.817Если размер не задан, то он равен 20480 сессиям.818Использование встроенного кэша может вести к фрагментации памяти.819</tag-desc>820821<tag-name id="ssl_session_cache_shared"><literal>shared</literal></tag-name>822<tag-desc>823кэш, разделяемый между всеми рабочими процессами.824Размер кэша задаётся в байтах, в 1 мегабайт может поместиться825около 4000 сессий.826У каждого разделяемого кэша должно быть произвольное название.827Кэш с одинаковым названием может использоваться в нескольких828виртуальных серверах.829Также он используется для автоматического создания, хранения и830периодического обновления ключей TLS session tickets (1.23.2),831если они не указаны явно832с помощью директивы <link id="ssl_session_ticket_key"/>.833</tag-desc>834835</list>836</para>837838<para>839Можно использовать одновременно оба типа кэша, например:840<example>841ssl_session_cache builtin:1000 shared:SSL:10m;842</example>843однако использование только разделяемого кэша без встроенного должно844быть более эффективным.845</para>846847</directive>848849850<directive name="ssl_session_ticket_key">851<syntax><value>файл</value></syntax>852<default/>853<context>stream</context>854<context>server</context>855856<para>857Задаёт <value>файл</value> с секретным ключом, применяемым при шифровании и858расшифровании TLS session tickets.859Директива необходима, если один и тот же ключ нужно использовать860на нескольких серверах.861По умолчанию используется случайно сгенерированный ключ.862</para>863864<para>865Если указано несколько ключей, то только первый ключ866используется для шифрования TLS session tickets.867Это позволяет настроить ротацию ключей, например:868<example>869ssl_session_ticket_key current.key;870ssl_session_ticket_key previous.key;871</example>872</para>873874<para>875<value>Файл</value> должен содержать 80 или 48 байт случайных данных876и может быть создан следующей командой:877<example>878openssl rand 80 > ticket.key879</example>880В зависимости от размера файла для шифрования будет использоваться либо881AES256 (для 80-байтных ключей, 1.11.8), либо AES128 (для 48-байтных ключей).882</para>883884</directive>885886887<directive name="ssl_session_tickets">888<syntax><literal>on</literal> | <literal>off</literal></syntax>889<default>on</default>890<context>stream</context>891<context>server</context>892893<para>894Разрешает или запрещает возобновление сессий при помощи895<link url="https://datatracker.ietf.org/doc/html/rfc5077">TLS session tickets</link>.896</para>897898</directive>899900901<directive name="ssl_session_timeout">902<syntax><value>время</value></syntax>903<default>5m</default>904<context>stream</context>905<context>server</context>906907<para>908Задаёт время, в течение которого клиент может повторно909использовать параметры сессии.910</para>911912</directive>913914915<directive name="ssl_stapling">916<syntax><literal>on</literal> | <literal>off</literal></syntax>917<default>off</default>918<context>stream</context>919<context>server</context>920<appeared-in>1.27.2</appeared-in>921922<para>923Разрешает или запрещает924<link url="https://datatracker.ietf.org/doc/html/rfc6066#section-8">прикрепление925OCSP-ответов</link> сервером.926Пример:927<example>928ssl_stapling on;929resolver 192.0.2.1;930</example>931</para>932933<para>934Для работы OCSP stapling’а должен быть известен сертификат издателя935сертификата сервера.936Если в заданном директивой <link id="ssl_certificate"/>937файле не содержится промежуточных сертификатов,938то сертификат издателя сертификата сервера следует поместить в файл,939заданный директивой <link id="ssl_trusted_certificate"/>.940</para>941942<para>943Для преобразования имени хоста OCSP responder’а в адрес необходимо944дополнительно задать директиву945<link doc="ngx_stream_core_module.xml" id="resolver"/>.946</para>947948</directive>949950951<directive name="ssl_stapling_file">952<syntax><value>файл</value></syntax>953<default/>954<context>stream</context>955<context>server</context>956<appeared-in>1.27.2</appeared-in>957958<para>959Если задано, то вместо опроса OCSP responder’а,960указанного в сертификате сервера,961ответ берётся из указанного <value>файла</value>.962</para>963964<para>965Ответ должен быть в формате DER и может быть сгенерирован командой966“<literal>openssl ocsp</literal>”.967</para>968969</directive>970971972<directive name="ssl_stapling_responder">973<syntax><value>url</value></syntax>974<default/>975<context>stream</context>976<context>server</context>977<appeared-in>1.27.2</appeared-in>978979<para>980Переопределяет URL OCSP responder’а, указанный в расширении сертификата981“<link url="https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.2.1">Authority982Information Access</link>”.983</para>984985<para>986Поддерживаются только “<literal>http://</literal>” OCSP responder’ы:987<example>988ssl_stapling_responder http://ocsp.example.com/;989</example>990</para>991992</directive>993994995<directive name="ssl_stapling_verify">996<syntax><literal>on</literal> | <literal>off</literal></syntax>997<default>off</default>998<context>stream</context>999<context>server</context>1000<appeared-in>1.27.2</appeared-in>10011002<para>1003Разрешает или запрещает проверку сервером ответов OCSP.1004</para>10051006<para>1007Для работоспособности проверки сертификат издателя сертификата сервера,1008корневой сертификат и все промежуточные сертификаты должны быть указаны1009как доверенные с помощью директивы1010<link id="ssl_trusted_certificate"/>.1011</para>10121013</directive>101410151016<directive name="ssl_trusted_certificate">1017<syntax><value>файл</value></syntax>1018<default/>1019<context>stream</context>1020<context>server</context>1021<appeared-in>1.11.8</appeared-in>10221023<para>1024Задаёт <value>файл</value> с доверенными сертификатами CA в формате PEM,1025которые используются для <link id="ssl_verify_client">проверки</link>1026клиентских сертификатов и ответов OCSP,1027если включён <link id="ssl_stapling"/>.1028</para>10291030<para>1031В отличие от <link id="ssl_client_certificate"/>, список этих сертификатов1032не будет отправляться клиентам.1033</para>10341035</directive>103610371038<directive name="ssl_verify_client">1039<syntax>1040<literal>on</literal> | <literal>off</literal> |1041<literal>optional</literal> | <literal>optional_no_ca</literal></syntax>1042<default>off</default>1043<context>stream</context>1044<context>server</context>1045<appeared-in>1.11.8</appeared-in>10461047<para>1048Разрешает проверку клиентских сертификатов.1049Результат проверки доступен через переменную1050<link id="var_ssl_client_verify">$ssl_client_verify</link>.1051Если при проверке клиентского сертификата произошла ошибка1052или клиент не предоставил требуемый сертификат,1053соединение закрывается.1054</para>10551056<para>1057Параметр <literal>optional</literal> запрашивает клиентский1058сертификат, и если сертификат был предоставлен, проверяет его.1059</para>10601061<para>1062Параметр <literal>optional_no_ca</literal>1063запрашивает сертификат1064клиента, но не требует, чтобы он был подписан доверенным сертификатом CA.1065Это предназначено для случаев, когда фактическая проверка сертификата1066осуществляется внешним по отношению к nginx’у сервисом.1067Содержимое сертификата доступно через переменную1068<link id="var_ssl_client_cert">$ssl_client_cert</link>.1069</para>10701071</directive>107210731074<directive name="ssl_verify_depth">1075<syntax><value>число</value></syntax>1076<default>1</default>1077<context>stream</context>1078<context>server</context>1079<appeared-in>1.11.8</appeared-in>10801081<para>1082Устанавливает глубину проверки в цепочке клиентских сертификатов.1083</para>10841085</directive>10861087</section>108810891090<section id="variables" name="Встроенные переменные">10911092<para>1093Модуль <literal>ngx_stream_ssl_module</literal> поддерживает переменные1094начиная с версии 1.11.2.1095<list type="tag">10961097<tag-name id="var_ssl_alpn_protocol"><var>$ssl_alpn_protocol</var></tag-name>1098<tag-desc>1099возвращает протокол, выбранный при помощи ALPN во время операции SSL handshake,1100либо пустую строку (1.21.4);1101</tag-desc>11021103<tag-name id="var_ssl_cipher"><var>$ssl_cipher</var></tag-name>1104<tag-desc>1105возвращает название используемого шифра для установленного SSL-соединения;1106</tag-desc>11071108<tag-name id="var_ssl_ciphers"><var>$ssl_ciphers</var></tag-name>1109<tag-desc>1110возвращает список шифров, поддерживаемых клиентом (1.11.7).1111Известные шифры указаны по имени, неизвестные указаны в шестнадцатеричном виде,1112например:1113<example>1114AES128-SHA:AES256-SHA:0x00ff1115</example>1116<note>1117Переменная полностью поддерживается при использовании OpenSSL версии 1.0.21118и выше.1119При использовании более старых версий переменная доступна1120только для новых сессий и может содержать только известные шифры.1121</note>1122</tag-desc>11231124<tag-name id="var_ssl_client_cert"><var>$ssl_client_cert</var></tag-name>1125<tag-desc>1126возвращает клиентский сертификат в формате PEM1127для установленного SSL-соединения, перед каждой строкой которого, кроме первой,1128вставляется символ табуляции (1.11.8);1129</tag-desc>11301131<tag-name id="var_ssl_client_fingerprint"><var>$ssl_client_fingerprint</var></tag-name>1132<tag-desc>1133возвращает SHA1-отпечаток клиентского сертификата1134для установленного SSL-соединения (1.11.8);1135</tag-desc>11361137<tag-name id="var_ssl_client_i_dn"><var>$ssl_client_i_dn</var></tag-name>1138<tag-desc>1139возвращает строку “issuer DN” клиентского сертификата1140для установленного SSL-соединения согласно1141<link url="https://datatracker.ietf.org/doc/html/rfc2253">RFC 2253</link> (1.11.8);1142</tag-desc>11431144<tag-name id="var_ssl_client_raw_cert"><var>$ssl_client_raw_cert</var>1145</tag-name>1146<tag-desc>1147возвращает клиентский сертификат в формате PEM1148для установленного SSL-соединения (1.11.8);1149</tag-desc>11501151<tag-name id="var_ssl_client_s_dn"><var>$ssl_client_s_dn</var></tag-name>1152<tag-desc>1153возвращает строку “subject DN” клиентского сертификата1154для установленного SSL-соединения согласно1155<link url="https://datatracker.ietf.org/doc/html/rfc2253">RFC 2253</link> (1.11.8);1156</tag-desc>11571158<tag-name id="var_ssl_client_serial"><var>$ssl_client_serial</var></tag-name>1159<tag-desc>1160возвращает серийный номер клиентского сертификата1161для установленного SSL-соединения (1.11.8);1162</tag-desc>11631164<tag-name id="var_ssl_client_sigalg"><var>$ssl_client_sigalg</var></tag-name>1165<tag-desc>1166возвращает1167<link url="https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-16">алгоритм подписи</link>1168клиентского сертификата для установленного SSL-соединения (1.29.3).1169<note>1170Переменная поддерживается при использовании OpenSSL версии 3.5 и выше.1171При использовании более старых версий значением переменной будет пустая строка.1172</note>1173<note>1174Переменная доступна только для новых сессий.1175</note>1176</tag-desc>11771178<tag-name id="var_ssl_client_v_end"><var>$ssl_client_v_end</var></tag-name>1179<tag-desc>1180возвращает дату окончания срока действия клиентского сертификата (1.11.8);1181</tag-desc>11821183<tag-name id="var_ssl_client_v_remain"><var>$ssl_client_v_remain</var></tag-name>1184<tag-desc>1185возвращает число дней,1186оставшихся до истечения срока действия клиентского сертификата (1.11.8);1187</tag-desc>11881189<tag-name id="var_ssl_client_v_start"><var>$ssl_client_v_start</var></tag-name>1190<tag-desc>1191возвращает дату начала срока действия клиентского сертификата (1.11.8);1192</tag-desc>11931194<tag-name id="var_ssl_client_verify"><var>$ssl_client_verify</var></tag-name>1195<tag-desc>1196возвращает результат проверки клиентского сертификата (1.11.8):1197“<literal>SUCCESS</literal>”, “<literal>FAILED:</literal><value>reason</value>”1198и, если сертификат не был предоставлен, “<literal>NONE</literal>”;1199</tag-desc>12001201<tag-name id="var_ssl_curve"><var>$ssl_curve</var></tag-name>1202<tag-desc>1203возвращает согласованную кривую, использованную для1204обмена ключами во время операции SSL handshake (1.21.5).1205Известные кривые указаны по имени, неизвестные указаны в шестнадцатеричном виде,1206например:1207<example>1208prime256v11209</example>1210<note>1211Переменная поддерживается при использовании OpenSSL версии 3.0 и выше.1212При использовании более старых версий значением переменной будет пустая строка.1213</note>1214</tag-desc>12151216<tag-name id="var_ssl_curves"><var>$ssl_curves</var></tag-name>1217<tag-desc>1218возвращает список кривых, поддерживаемых клиентом (1.11.7).1219Известные кривые указаны по имени, неизвестные указаны в шестнадцатеричном виде,1220например:1221<example>12220x001d:prime256v1:secp521r1:secp384r11223</example>1224<note>1225Переменная поддерживается при использовании OpenSSL версии 1.0.2 и выше.1226При использовании более старых версий значением переменной будет пустая строка.1227</note>1228<note>1229Переменная доступна только для новых сессий.1230</note>1231</tag-desc>12321233<tag-name id="var_ssl_ech_outer_server_name"><var>$ssl_ech_outer_server_name</var></tag-name>1234<tag-desc>1235возвращает публичное имя сервера, запрошенное через1236<link url="http://en.wikipedia.org/wiki/Server_Name_Indication">SNI</link>1237если TLS 1.3 <link id="ssl_ech_file">ECH</link> был принят,1238иначе “” (1.29.4);1239</tag-desc>12401241<tag-name id="var_ssl_ech_status"><var>$ssl_ech_status</var></tag-name>1242<tag-desc>1243возвращает результат обработки TLS 1.3 <link id="ssl_ech_file">ECH</link>:1244“<literal>FAILED</literal>”,1245“<literal>BACKEND</literal>”,1246“<literal>GREASE</literal>”,1247“<literal>SUCCESS</literal>” или1248“<literal>NOT_TRIED</literal>” (1.29.4);1249<note>1250В настоящее время переменная поддерживается при использовании1251<link url="https://github.com/openssl/openssl/tree/feature/ech">ветки разработки ECH</link>1252и, таким образом, может измениться.1253В остальных случаях значением переменной будет пустая строка.1254</note>1255</tag-desc>12561257<tag-name id="var_ssl_protocol"><var>$ssl_protocol</var></tag-name>1258<tag-desc>1259возвращает протокол установленного SSL-соединения;1260</tag-desc>12611262<tag-name id="var_ssl_server_name"><var>$ssl_server_name</var></tag-name>1263<tag-desc>1264возвращает имя сервера, запрошенное через1265<link url="http://en.wikipedia.org/wiki/Server_Name_Indication">SNI</link>;1266</tag-desc>12671268<tag-name id="var_ssl_session_id"><var>$ssl_session_id</var></tag-name>1269<tag-desc>1270возвращает идентификатор сессии установленного SSL-соединения;1271</tag-desc>12721273<tag-name id="var_ssl_session_reused"><var>$ssl_session_reused</var></tag-name>1274<tag-desc>1275возвращает “<literal>r</literal>”, если сессия была использована повторно,1276иначе “<literal>.</literal>”.1277</tag-desc>12781279<tag-name id="var_ssl_sigalg"><var>$ssl_sigalg</var></tag-name>1280<tag-desc>1281возвращает1282<link url="https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-16">алгоритм подписи</link>1283сертификата сервера для установленного SSL-соединения (1.29.3).1284<note>1285Переменная поддерживается при использовании OpenSSL версии 3.5 и выше.1286При использовании более старых версий значением переменной будет пустая строка.1287</note>1288<note>1289Переменная доступна только для новых сессий.1290</note>1291</tag-desc>12921293</list>1294</para>12951296</section>12971298</module>129913001301