Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/stream/ngx_stream_ssl_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Nginx, Inc.
5
-->
6
7
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
8
9
<module name="Модуль ngx_stream_ssl_module"
10
link="/ru/docs/stream/ngx_stream_ssl_module.html"
11
lang="ru"
12
rev="47">
13
14
<section id="summary">
15
16
<para>
17
Модуль <literal>ngx_stream_ssl_module</literal> (1.9.0)
18
обеспечивает необходимую поддержку для работы
19
прокси-сервера по протоколу SSL/TLS.
20
</para>
21
22
<para>
23
По умолчанию этот модуль не собирается, его сборку необходимо
24
разрешить с помощью конфигурационного параметра
25
<literal>--with-stream_ssl_module</literal>.
26
<note>
27
Для сборки и работы этого модуля нужна библиотека
28
<link url="http://www.openssl.org">OpenSSL</link>.
29
</note>
30
</para>
31
32
</section>
33
34
35
<section id="example" name="Пример конфигурации">
36
37
<para>
38
Для уменьшения загрузки процессора рекомендуется
39
<list type="bullet">
40
41
<listitem>
42
установить число
43
<link doc="../ngx_core_module.xml" id="worker_processes">рабочих процессов</link>
44
равным числу процессоров,
45
</listitem>
46
47
<listitem>
48
включить <link id="ssl_session_cache_shared">разделяемый</link> кэш сессий,
49
</listitem>
50
51
<listitem>
52
выключить <link id="ssl_session_cache_builtin">встроенный</link> кэш сессий
53
</listitem>
54
55
<listitem>
56
и, возможно, увеличить <link id="ssl_session_timeout">время жизни</link> сессии
57
(по умолчанию 5 минут):
58
</listitem>
59
60
</list>
61
62
<example>
63
<emphasis>worker_processes auto;</emphasis>
64
65
stream {
66
67
...
68
69
server {
70
listen 12345 ssl;
71
72
ssl_protocols TLSv1.2 TLSv1.3;
73
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
74
ssl_certificate /usr/local/nginx/conf/cert.pem;
75
ssl_certificate_key /usr/local/nginx/conf/cert.key;
76
<emphasis>ssl_session_cache shared:SSL:10m;</emphasis>
77
<emphasis>ssl_session_timeout 10m;</emphasis>
78
79
...
80
}
81
</example>
82
</para>
83
84
</section>
85
86
87
<section id="directives" name="Директивы">
88
89
<directive name="ssl_alpn">
90
<syntax><value>протокол</value> ...</syntax>
91
<default/>
92
<context>stream</context>
93
<context>server</context>
94
<appeared-in>1.21.4</appeared-in>
95
96
<para>
97
Задаёт список поддерживаемых
98
протоколов
99
<link url="https://datatracker.ietf.org/doc/html/rfc7301">ALPN</link>.
100
Один из протоколов должен быть
101
<link id="var_ssl_alpn_protocol">согласован</link>, если клиент использует ALPN:
102
<example>
103
map $ssl_alpn_protocol $proxy {
104
h2 127.0.0.1:8001;
105
http/1.1 127.0.0.1:8002;
106
}
107
108
server {
109
listen 12346;
110
proxy_pass $proxy;
111
ssl_alpn h2 http/1.1;
112
}
113
</example>
114
</para>
115
116
</directive>
117
118
119
<directive name="ssl_certificate">
120
<syntax><value>файл</value></syntax>
121
<default/>
122
<context>stream</context>
123
<context>server</context>
124
125
<para>
126
Указывает <value>файл</value> с сертификатом в формате PEM
127
для данного виртуального сервера.
128
Если вместе с основным сертификатом нужно указать промежуточные,
129
то они должны находиться в этом же файле в следующем порядке: сначала
130
основной сертификат, а затем промежуточные.
131
В этом же файле может находиться секретный ключ в формате PEM.
132
</para>
133
134
<para>
135
Начиная с версии 1.11.0
136
эта директива может быть указана несколько раз
137
для загрузки сертификатов разных типов, например RSA и ECDSA:
138
<example>
139
server {
140
listen 12345 ssl;
141
142
ssl_certificate example.com.rsa.crt;
143
ssl_certificate_key example.com.rsa.key;
144
145
ssl_certificate example.com.ecdsa.crt;
146
ssl_certificate_key example.com.ecdsa.key;
147
148
...
149
}
150
</example>
151
<note>
152
Возможность задавать отдельные
153
<link doc="../http/configuring_https_servers.xml" id="chains">цепочки
154
сертификатов</link>
155
для разных сертификатов
156
есть только в OpenSSL 1.0.2 и выше.
157
Для более старых версий следует указывать только одну цепочку сертификатов.
158
</note>
159
</para>
160
161
<para id="ssl_certificate_variables">
162
Начиная с версии 1.15.9 в имени файла можно использовать переменные
163
при использовании OpenSSL 1.0.2 и выше:
164
<example>
165
ssl_certificate $ssl_server_name.crt;
166
ssl_certificate_key $ssl_server_name.key;
167
</example>
168
Однако нужно учитывать, что при использовании переменных
169
сертификат загружается при каждой операции SSL handshake,
170
что может отрицательно влиять на производительность.
171
</para>
172
173
<para id="ssl_certificate_data">
174
Вместо <value>файла</value> можно указать значение
175
<literal>data</literal>:<value>$переменная</value> (1.15.10),
176
при котором сертификат загружается из переменной
177
без использования промежуточных файлов.
178
При этом следует учитывать, что ненадлежащее использование
179
подобного синтаксиса может быть небезопасно,
180
например данные секретного ключа могут попасть в
181
<link doc="../ngx_core_module.xml" id="error_log">лог ошибок</link>.
182
</para>
183
184
<para>
185
Нужно иметь в виду, что из-за ограничения протокола SSL/TLS
186
для максимальной совместимости с клиентами, которые не используют
187
<link url="http://en.wikipedia.org/wiki/Server_Name_Indication">SNI</link>,
188
виртуальные серверы с разными сертификатами должны слушать на
189
<link doc="../http/configuring_https_servers.xml"
190
id="name_based_https_servers">разных
191
IP-адресах</link>.
192
</para>
193
194
</directive>
195
196
197
<directive name="ssl_certificate_cache">
198
<syntax><literal>off</literal></syntax>
199
<syntax>
200
<literal>max</literal>=<value>N</value>
201
[<literal>inactive</literal>=<value>время</value>]
202
[<literal>valid</literal>=<value>время</value>]</syntax>
203
<default>off</default>
204
<context>stream</context>
205
<context>server</context>
206
<appeared-in>1.27.4</appeared-in>
207
208
<para>
209
Задаёт кэш, в котором могут храниться
210
<link id="ssl_certificate">SSL-сертификаты</link> и
211
<link id="ssl_certificate_key">секретные ключи</link>,
212
полученные из <link id="ssl_certificate_key_variables">переменных</link>.
213
</para>
214
215
<para>
216
У директивы есть следующие параметры:
217
<list type="tag">
218
219
<tag-name id="ssl_certificate_cache_max">
220
<literal>max</literal>
221
</tag-name>
222
<tag-desc>
223
задаёт максимальное число элементов в кэше;
224
при переполнении кэша удаляются наименее востребованные элементы (LRU);
225
</tag-desc>
226
227
<tag-name id="ssl_certificate_cache_inactive">
228
<literal>inactive</literal>
229
</tag-name>
230
<tag-desc>
231
задаёт время, после которого элемент кэша удаляется,
232
если к нему не было обращений в течение этого времени;
233
по умолчанию 10 секунд;
234
</tag-desc>
235
236
<tag-name id="ssl_certificate_cache_valid">
237
<literal>valid</literal>
238
</tag-name>
239
<tag-desc>
240
задает время, в течение которого
241
элемент кэша считается действительным
242
и может быть повторно использован,
243
по умолчанию 60 секунд.
244
По завершении этого времени сертификат будет обновлён или повторно проверен;
245
</tag-desc>
246
247
<tag-name id="ssl_certificate_cache_off">
248
<literal>off</literal>
249
</tag-name>
250
<tag-desc>
251
запрещает кэш.
252
</tag-desc>
253
254
</list>
255
</para>
256
257
<para>
258
Пример:
259
<example>
260
ssl_certificate $ssl_server_name.crt;
261
ssl_certificate_key $ssl_server_name.key;
262
ssl_certificate_cache max=1000 inactive=20s valid=1m;
263
</example>
264
</para>
265
266
</directive>
267
268
269
<directive name="ssl_certificate_compression">
270
<syntax><literal>on</literal> | <literal>off</literal></syntax>
271
<default>off</default>
272
<context>stream</context>
273
<context>server</context>
274
<appeared-in>1.29.1</appeared-in>
275
276
<para>
277
Разрешает
278
<link url="https://datatracker.ietf.org/doc/html/rfc8879">сжатие</link>
279
серверных сертификатов при использовании TLS 1.3.
280
<note>
281
Директива поддерживается при использовании OpenSSL 3.2 и выше;
282
список поддерживаемых алгоритмов сжатия обеспечивается библиотекой.
283
</note>
284
<note>
285
Директива поддерживается при использовании BoringSSL;
286
список поддерживаемых алгоритмов сжатия включает
287
<literal>zlib</literal> (1.29.3).
288
</note>
289
</para>
290
291
</directive>
292
293
294
<directive name="ssl_certificate_key">
295
<syntax><value>файл</value></syntax>
296
<default/>
297
<context>stream</context>
298
<context>server</context>
299
300
<para>
301
Указывает <value>файл</value> с секретным ключом в формате PEM
302
для данного виртуального сервера.
303
</para>
304
305
<para>
306
Вместо <value>файла</value> можно указать значение
307
<literal>engine</literal>:<value>имя</value>:<value>id</value>,
308
которое загружает ключ с указанным <value>id</value>
309
из OpenSSL engine с заданным <value>именем</value>.
310
</para>
311
312
<para>
313
Вместо <value>файла</value> можно указать значение
314
<literal>store</literal>:<value>схема</value>:<value>id</value> (1.29.0),
315
которое используется для загрузки ключа с указанным <value>id</value>
316
и зарегистрированной провайдером OpenSSL <value>схемой</value> URI, такой как
317
<link url="https://datatracker.ietf.org/doc/html/rfc7512"><literal>pkcs11</literal></link>.
318
</para>
319
320
<para id="ssl_certificate_key_data">
321
Вместо <value>файла</value> можно указать значение
322
<literal>data</literal>:<value>$переменная</value> (1.15.10),
323
при котором секретный ключ загружается из переменной
324
без использования промежуточных файлов.
325
При этом следует учитывать, что ненадлежащее использование
326
подобного синтаксиса может быть небезопасно,
327
например данные секретного ключа могут попасть в
328
<link doc="../ngx_core_module.xml" id="error_log">лог ошибок</link>.
329
</para>
330
331
<para id="ssl_certificate_key_variables">
332
Начиная с версии 1.15.9 в имени файла можно использовать переменные
333
при использовании OpenSSL 1.0.2 и выше.
334
</para>
335
336
</directive>
337
338
339
<directive name="ssl_ciphers">
340
<syntax><value>шифры</value></syntax>
341
<default>HIGH:!aNULL:!MD5</default>
342
<context>stream</context>
343
<context>server</context>
344
345
<para>
346
Описывает разрешённые шифры.
347
Шифры задаются в формате, поддерживаемом библиотекой
348
OpenSSL, например:
349
<example>
350
ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
351
</example>
352
</para>
353
354
<para>
355
Полный список можно посмотреть с помощью команды
356
<command>openssl ciphers</command>”.
357
</para>
358
359
</directive>
360
361
362
<directive name="ssl_client_certificate">
363
<syntax><value>файл</value></syntax>
364
<default/>
365
<context>stream</context>
366
<context>server</context>
367
<appeared-in>1.11.8</appeared-in>
368
369
<para>
370
Указывает <value>файл</value> с доверенными сертификатами CA в формате
371
PEM, которые используются для
372
<link id="ssl_verify_client">проверки</link> клиентских сертификатов и
373
ответов OCSP, если включён <link id="ssl_stapling"/>.
374
</para>
375
376
<para>
377
Список сертификатов будет отправляться клиентам.
378
Если это нежелательно, можно воспользоваться директивой
379
<link id="ssl_trusted_certificate"/>.
380
</para>
381
382
</directive>
383
384
385
<directive name="ssl_conf_command">
386
<syntax><value>имя</value> <value>значение</value></syntax>
387
<default/>
388
<context>stream</context>
389
<context>server</context>
390
<appeared-in>1.19.4</appeared-in>
391
392
<para>
393
Задаёт произвольные конфигурационные
394
<link url="https://www.openssl.org/docs/man1.1.1/man3/SSL_CONF_cmd.html">команды</link>
395
OpenSSL.
396
<note>
397
Директива поддерживается при использовании OpenSSL 1.0.2 и выше.
398
</note>
399
</para>
400
401
<para>
402
На одном уровне может быть указано
403
несколько директив <literal>ssl_conf_command</literal>:
404
<example>
405
ssl_conf_command Options PrioritizeChaCha;
406
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
407
</example>
408
Директивы наследуются с предыдущего уровня конфигурации при условии, что
409
на данном уровне не описаны свои директивы <literal>ssl_conf_command</literal>.
410
</para>
411
412
<para>
413
<note>
414
Следует учитывать, что изменение настроек OpenSSL напрямую
415
может привести к неожиданному поведению.
416
</note>
417
</para>
418
419
</directive>
420
421
422
<directive name="ssl_crl">
423
<syntax><value>файл</value></syntax>
424
<default/>
425
<context>stream</context>
426
<context>server</context>
427
<appeared-in>1.11.8</appeared-in>
428
429
<para>
430
Указывает <value>файл</value> с отозванными сертификатами (CRL)
431
в формате PEM, используемыми для
432
<link id="ssl_verify_client">проверки</link> клиентских сертификатов.
433
Если используются промежуточные сертификаты,
434
их списки CRL должны находиться в этом же файле.
435
</para>
436
437
</directive>
438
439
440
<directive name="ssl_dhparam">
441
<syntax><value>файл</value></syntax>
442
<default/>
443
<context>stream</context>
444
<context>server</context>
445
446
<para>
447
Указывает <value>файл</value> с параметрами для DHE-шифров.
448
</para>
449
450
<para>
451
По умолчанию параметры не заданы,
452
и соответственно DHE-шифры не будут использоваться.
453
<note>
454
До версии 1.11.0 по умолчанию использовались встроенные параметры.
455
</note>
456
</para>
457
458
</directive>
459
460
461
<directive name="ssl_ecdh_curve">
462
<syntax><value>кривая</value></syntax>
463
<default>auto</default>
464
<context>stream</context>
465
<context>server</context>
466
467
<para>
468
Задаёт кривую для ECDHE-шифров.
469
</para>
470
471
<para>
472
При использовании OpenSSL 1.0.2 и выше
473
можно указывать несколько кривых (1.11.0), например:
474
<example>
475
ssl_ecdh_curve prime256v1:secp384r1;
476
</example>
477
</para>
478
479
<para>
480
Специальное значение <literal>auto</literal> (1.11.0) соответствует
481
встроенному в библиотеку OpenSSL списку кривых для OpenSSL 1.0.2 и выше,
482
или <literal>prime256v1</literal> для более старых версий.
483
</para>
484
485
<para>
486
<note>
487
До версии 1.11.0
488
по умолчанию использовалась кривая <literal>prime256v1</literal>.
489
</note>
490
</para>
491
492
<para>
493
<note>
494
При использовании OpenSSL 1.0.2 и выше
495
директива задаёт список кривых, поддерживаемых сервером.
496
Поэтому для работы ECDSA-сертификатов
497
важно, чтобы список включал кривые, используемые в сертификатах.
498
</note>
499
</para>
500
501
</directive>
502
503
504
<directive name="ssl_ech_file">
505
<syntax><value>file</value></syntax>
506
<default/>
507
<context>stream</context>
508
<context>server</context>
509
<appeared-in>1.29.4</appeared-in>
510
511
<para>
512
Задаёт <value>файл</value> с конфигурацией Encrypted ClientHello
513
(<literal>ECHConfig</literal>) в формате
514
<link url="https://datatracker.ietf.org/doc/draft-farrell-tls-pemesni/">PEM</link>,
515
используемой для включения TLS 1.3
516
<link url="https://datatracker.ietf.org/doc/html/draft-ietf-tls-esni">ECH</link>
517
в shared-режиме.
518
</para>
519
520
<para>
521
<note>
522
В настоящее время директива поддерживается только при использовании
523
<link url="https://github.com/openssl/openssl/tree/feature/ech">ветки
524
разработки ECH</link> OpenSSL.
525
</note>
526
</para>
527
528
</directive>
529
530
531
<directive name="ssl_handshake_timeout">
532
<syntax><value>время</value></syntax>
533
<default>60s</default>
534
<context>stream</context>
535
<context>server</context>
536
537
<para>
538
Задаёт таймаут для завершения операции SSL handshake.
539
</para>
540
541
</directive>
542
543
544
<directive name="ssl_key_log">
545
<syntax>путь</syntax>
546
<default/>
547
<context>stream</context>
548
<context>server</context>
549
<appeared-in>1.27.2</appeared-in>
550
551
<para>
552
Включает логирование SSL-ключей клиентских соединений
553
и указывает путь к лог-файлу ключей.
554
Ключи записываются в формате
555
<link url="https://datatracker.ietf.org/doc/html/draft-ietf-tls-keylogfile">SSLKEYLOGFILE</link>
556
совместимом с Wireshark.
557
</para>
558
559
<para>
560
<note>
561
Директива доступна как часть
562
<commercial_version>коммерческой подписки</commercial_version>.
563
</note>
564
</para>
565
566
</directive>
567
568
569
<directive name="ssl_ocsp">
570
<syntax><literal>on</literal> |
571
<literal>off</literal> |
572
<literal>leaf</literal></syntax>
573
<default>off</default>
574
<context>stream</context>
575
<context>server</context>
576
<appeared-in>1.27.2</appeared-in>
577
578
<para>
579
Включает проверку OCSP для цепочки клиентских сертификатов.
580
Параметр <literal>leaf</literal>
581
включает проверку только клиентского сертификата.
582
</para>
583
584
<para>
585
Для работы проверки OCSP
586
необходимо дополнительно установить значение директивы
587
<link id="ssl_verify_client"/> в
588
<literal>on</literal> или <literal>optional</literal>.
589
</para>
590
591
<para>
592
Для преобразования имени хоста OCSP responder’а в адрес необходимо
593
дополнительно задать директиву
594
<link doc="ngx_stream_core_module.xml" id="resolver"/>.
595
</para>
596
597
<para>
598
Пример:
599
<example>
600
ssl_verify_client on;
601
ssl_ocsp on;
602
resolver 192.0.2.1;
603
</example>
604
</para>
605
606
</directive>
607
608
609
<directive name="ssl_ocsp_cache">
610
<syntax>
611
<literal>off</literal> |
612
[<literal>shared</literal>:<value>имя</value>:<value>размер</value>]</syntax>
613
<default>off</default>
614
<context>stream</context>
615
<context>server</context>
616
<appeared-in>1.27.2</appeared-in>
617
618
<para>
619
Задаёт <literal>имя</literal> и <literal>размер</literal> кэша,
620
который хранит статус клиентских сертификатов для проверки OCSP-ответов.
621
Кэш разделяется между всеми рабочими процессами.
622
Кэш с одинаковым названием может использоваться в нескольких
623
виртуальных серверах.
624
</para>
625
626
<para>
627
Параметр <literal>off</literal> запрещает использование кэша.
628
</para>
629
630
</directive>
631
632
633
<directive name="ssl_ocsp_responder">
634
<syntax><value>url</value></syntax>
635
<default/>
636
<context>stream</context>
637
<context>server</context>
638
<appeared-in>1.27.2</appeared-in>
639
640
<para>
641
Переопределяет URL OCSP responder’а, указанный в расширении сертификата
642
<link url="https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.2.1">Authority
643
Information Access</link>
644
для <link id="ssl_ocsp">проверки</link> клиентских сертификатов.
645
</para>
646
647
<para>
648
Поддерживаются только “<literal>http://</literal>” OCSP responder’ы:
649
<example>
650
ssl_ocsp_responder http://ocsp.example.com/;
651
</example>
652
</para>
653
654
</directive>
655
656
657
<directive name="ssl_password_file">
658
<syntax><value>файл</value></syntax>
659
<default/>
660
<context>stream</context>
661
<context>server</context>
662
663
<para>
664
Задаёт <value>файл</value> с паролями от
665
<link id="ssl_certificate_key">секретных ключей</link>,
666
где каждый пароль указан на отдельной строке.
667
Пароли применяются по очереди в момент загрузки ключа.
668
</para>
669
670
<para>
671
Пример:
672
<example>
673
stream {
674
ssl_password_file /etc/keys/global.pass;
675
...
676
677
server {
678
listen 127.0.0.1:12345;
679
ssl_certificate_key /etc/keys/first.key;
680
}
681
682
server {
683
listen 127.0.0.1:12346;
684
685
# вместо файла можно указать именованный канал
686
ssl_password_file /etc/keys/fifo;
687
ssl_certificate_key /etc/keys/second.key;
688
}
689
}
690
</example>
691
</para>
692
693
</directive>
694
695
696
<directive name="ssl_prefer_server_ciphers">
697
<syntax><literal>on</literal> | <literal>off</literal></syntax>
698
<default>off</default>
699
<context>stream</context>
700
<context>server</context>
701
702
<para>
703
Указывает, чтобы при использовании протоколов SSLv3 и TLS
704
серверные шифры были более приоритетны, чем клиентские.
705
</para>
706
707
</directive>
708
709
710
<directive name="ssl_protocols">
711
<syntax>
712
[<literal>SSLv2</literal>]
713
[<literal>SSLv3</literal>]
714
[<literal>TLSv1</literal>]
715
[<literal>TLSv1.1</literal>]
716
[<literal>TLSv1.2</literal>]
717
[<literal>TLSv1.3</literal>]</syntax>
718
<default>TLSv1.2 TLSv1.3</default>
719
<context>stream</context>
720
<context>server</context>
721
722
<para>
723
Разрешает указанные протоколы.
724
</para>
725
726
<para>
727
Если директива указана
728
на уровне <link doc="ngx_stream_core_module.xml" id="server"/>,
729
то может использоваться значение из сервера по умолчанию.
730
Подробнее см. в разделе
731
<link doc="../http/server_names.xml" id="virtual_server_selection">Выбор
732
виртуального сервера</link>”.
733
</para>
734
735
<para>
736
<note>
737
Параметры <literal>TLSv1.1</literal> и <literal>TLSv1.2</literal>
738
работают только при использовании OpenSSL 1.0.1 и выше.
739
</note>
740
<note>
741
Параметр <literal>TLSv1.3</literal> (1.13.0) работает только
742
при использовании OpenSSL 1.1.1 и выше.
743
</note>
744
<note>
745
Параметр <literal>TLSv1.3</literal> используется по умолчанию
746
начиная с 1.23.4.
747
</note>
748
</para>
749
750
</directive>
751
752
753
<directive name="ssl_reject_handshake">
754
<syntax><literal>on</literal> | <literal>off</literal></syntax>
755
<default>off</default>
756
<context>stream</context>
757
<context>server</context>
758
<appeared-in>1.25.5</appeared-in>
759
760
<para>
761
Если разрешено, то операции SSL handshake в
762
блоке <link doc="ngx_stream_core_module.xml" id="server"/> будут отклонены.
763
</para>
764
765
<para>
766
Например в этой конфигурации отклоняются все операции SSL handshake с
767
именем сервера, отличным от <literal>example.com</literal>:
768
<example>
769
server {
770
listen 443 ssl default_server;
771
ssl_reject_handshake on;
772
}
773
774
server {
775
listen 443 ssl;
776
server_name example.com;
777
ssl_certificate example.com.crt;
778
ssl_certificate_key example.com.key;
779
}
780
</example>
781
</para>
782
783
</directive>
784
785
786
<directive name="ssl_session_cache">
787
<syntax>
788
<literal>off</literal> |
789
<literal>none</literal> |
790
[<literal>builtin</literal>[:<value>размер</value>]]
791
[<literal>shared</literal>:<value>название</value>:<value>размер</value>]</syntax>
792
<default>none</default>
793
<context>stream</context>
794
<context>server</context>
795
796
<para>
797
Задаёт тип и размеры кэшей для хранения параметров сессий.
798
Тип кэша может быть следующим:
799
<list type="tag">
800
801
<tag-name><literal>off</literal></tag-name>
802
<tag-desc>
803
жёсткое запрещение использования кэша сессий:
804
nginx явно сообщает клиенту, что сессии не могут использоваться повторно.
805
</tag-desc>
806
807
<tag-name><literal>none</literal></tag-name>
808
<tag-desc>
809
мягкое запрещение использования кэша сессий:
810
nginx сообщает клиенту, что сессии могут использоваться повторно, но
811
на самом деле не хранит параметры сессии в кэше.
812
</tag-desc>
813
814
<tag-name id="ssl_session_cache_builtin"><literal>builtin</literal></tag-name>
815
<tag-desc>
816
встроенный в OpenSSL кэш, используется в рамках только одного рабочего процесса.
817
Размер кэша задаётся в сессиях.
818
Если размер не задан, то он равен 20480 сессиям.
819
Использование встроенного кэша может вести к фрагментации памяти.
820
</tag-desc>
821
822
<tag-name id="ssl_session_cache_shared"><literal>shared</literal></tag-name>
823
<tag-desc>
824
кэш, разделяемый между всеми рабочими процессами.
825
Размер кэша задаётся в байтах, в 1 мегабайт может поместиться
826
около 4000 сессий.
827
У каждого разделяемого кэша должно быть произвольное название.
828
Кэш с одинаковым названием может использоваться в нескольких
829
виртуальных серверах.
830
Также он используется для автоматического создания, хранения и
831
периодического обновления ключей TLS session tickets (1.23.2),
832
если они не указаны явно
833
с помощью директивы <link id="ssl_session_ticket_key"/>.
834
</tag-desc>
835
836
</list>
837
</para>
838
839
<para>
840
Можно использовать одновременно оба типа кэша, например:
841
<example>
842
ssl_session_cache builtin:1000 shared:SSL:10m;
843
</example>
844
однако использование только разделяемого кэша без встроенного должно
845
быть более эффективным.
846
</para>
847
848
</directive>
849
850
851
<directive name="ssl_session_ticket_key">
852
<syntax><value>файл</value></syntax>
853
<default/>
854
<context>stream</context>
855
<context>server</context>
856
857
<para>
858
Задаёт <value>файл</value> с секретным ключом, применяемым при шифровании и
859
расшифровании TLS session tickets.
860
Директива необходима, если один и тот же ключ нужно использовать
861
на нескольких серверах.
862
По умолчанию используется случайно сгенерированный ключ.
863
</para>
864
865
<para>
866
Если указано несколько ключей, то только первый ключ
867
используется для шифрования TLS session tickets.
868
Это позволяет настроить ротацию ключей, например:
869
<example>
870
ssl_session_ticket_key current.key;
871
ssl_session_ticket_key previous.key;
872
</example>
873
</para>
874
875
<para>
876
<value>Файл</value> должен содержать 80 или 48 байт случайных данных
877
и может быть создан следующей командой:
878
<example>
879
openssl rand 80 > ticket.key
880
</example>
881
В зависимости от размера файла для шифрования будет использоваться либо
882
AES256 (для 80-байтных ключей, 1.11.8), либо AES128 (для 48-байтных ключей).
883
</para>
884
885
</directive>
886
887
888
<directive name="ssl_session_tickets">
889
<syntax><literal>on</literal> | <literal>off</literal></syntax>
890
<default>on</default>
891
<context>stream</context>
892
<context>server</context>
893
894
<para>
895
Разрешает или запрещает возобновление сессий при помощи
896
<link url="https://datatracker.ietf.org/doc/html/rfc5077">TLS session tickets</link>.
897
</para>
898
899
</directive>
900
901
902
<directive name="ssl_session_timeout">
903
<syntax><value>время</value></syntax>
904
<default>5m</default>
905
<context>stream</context>
906
<context>server</context>
907
908
<para>
909
Задаёт время, в течение которого клиент может повторно
910
использовать параметры сессии.
911
</para>
912
913
</directive>
914
915
916
<directive name="ssl_stapling">
917
<syntax><literal>on</literal> | <literal>off</literal></syntax>
918
<default>off</default>
919
<context>stream</context>
920
<context>server</context>
921
<appeared-in>1.27.2</appeared-in>
922
923
<para>
924
Разрешает или запрещает
925
<link url="https://datatracker.ietf.org/doc/html/rfc6066#section-8">прикрепление
926
OCSP-ответов</link> сервером.
927
Пример:
928
<example>
929
ssl_stapling on;
930
resolver 192.0.2.1;
931
</example>
932
</para>
933
934
<para>
935
Для работы OCSP stapling’а должен быть известен сертификат издателя
936
сертификата сервера.
937
Если в заданном директивой <link id="ssl_certificate"/>
938
файле не содержится промежуточных сертификатов,
939
то сертификат издателя сертификата сервера следует поместить в файл,
940
заданный директивой <link id="ssl_trusted_certificate"/>.
941
</para>
942
943
<para>
944
Для преобразования имени хоста OCSP responder’а в адрес необходимо
945
дополнительно задать директиву
946
<link doc="ngx_stream_core_module.xml" id="resolver"/>.
947
</para>
948
949
</directive>
950
951
952
<directive name="ssl_stapling_file">
953
<syntax><value>файл</value></syntax>
954
<default/>
955
<context>stream</context>
956
<context>server</context>
957
<appeared-in>1.27.2</appeared-in>
958
959
<para>
960
Если задано, то вместо опроса OCSP responder’а,
961
указанного в сертификате сервера,
962
ответ берётся из указанного <value>файла</value>.
963
</para>
964
965
<para>
966
Ответ должен быть в формате DER и может быть сгенерирован командой
967
<literal>openssl ocsp</literal>”.
968
</para>
969
970
</directive>
971
972
973
<directive name="ssl_stapling_responder">
974
<syntax><value>url</value></syntax>
975
<default/>
976
<context>stream</context>
977
<context>server</context>
978
<appeared-in>1.27.2</appeared-in>
979
980
<para>
981
Переопределяет URL OCSP responder’а, указанный в расширении сертификата
982
<link url="https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.2.1">Authority
983
Information Access</link>”.
984
</para>
985
986
<para>
987
Поддерживаются только “<literal>http://</literal>” OCSP responder’ы:
988
<example>
989
ssl_stapling_responder http://ocsp.example.com/;
990
</example>
991
</para>
992
993
</directive>
994
995
996
<directive name="ssl_stapling_verify">
997
<syntax><literal>on</literal> | <literal>off</literal></syntax>
998
<default>off</default>
999
<context>stream</context>
1000
<context>server</context>
1001
<appeared-in>1.27.2</appeared-in>
1002
1003
<para>
1004
Разрешает или запрещает проверку сервером ответов OCSP.
1005
</para>
1006
1007
<para>
1008
Для работоспособности проверки сертификат издателя сертификата сервера,
1009
корневой сертификат и все промежуточные сертификаты должны быть указаны
1010
как доверенные с помощью директивы
1011
<link id="ssl_trusted_certificate"/>.
1012
</para>
1013
1014
</directive>
1015
1016
1017
<directive name="ssl_trusted_certificate">
1018
<syntax><value>файл</value></syntax>
1019
<default/>
1020
<context>stream</context>
1021
<context>server</context>
1022
<appeared-in>1.11.8</appeared-in>
1023
1024
<para>
1025
Задаёт <value>файл</value> с доверенными сертификатами CA в формате PEM,
1026
которые используются для <link id="ssl_verify_client">проверки</link>
1027
клиентских сертификатов и ответов OCSP,
1028
если включён <link id="ssl_stapling"/>.
1029
</para>
1030
1031
<para>
1032
В отличие от <link id="ssl_client_certificate"/>, список этих сертификатов
1033
не будет отправляться клиентам.
1034
</para>
1035
1036
</directive>
1037
1038
1039
<directive name="ssl_verify_client">
1040
<syntax>
1041
<literal>on</literal> | <literal>off</literal> |
1042
<literal>optional</literal> | <literal>optional_no_ca</literal></syntax>
1043
<default>off</default>
1044
<context>stream</context>
1045
<context>server</context>
1046
<appeared-in>1.11.8</appeared-in>
1047
1048
<para>
1049
Разрешает проверку клиентских сертификатов.
1050
Результат проверки доступен через переменную
1051
<link id="var_ssl_client_verify">$ssl_client_verify</link>.
1052
Если при проверке клиентского сертификата произошла ошибка
1053
или клиент не предоставил требуемый сертификат,
1054
соединение закрывается.
1055
</para>
1056
1057
<para>
1058
Параметр <literal>optional</literal> запрашивает клиентский
1059
сертификат, и если сертификат был предоставлен, проверяет его.
1060
</para>
1061
1062
<para>
1063
Параметр <literal>optional_no_ca</literal>
1064
запрашивает сертификат
1065
клиента, но не требует, чтобы он был подписан доверенным сертификатом CA.
1066
Это предназначено для случаев, когда фактическая проверка сертификата
1067
осуществляется внешним по отношению к nginx’у сервисом.
1068
Содержимое сертификата доступно через переменную
1069
<link id="var_ssl_client_cert">$ssl_client_cert</link>.
1070
</para>
1071
1072
</directive>
1073
1074
1075
<directive name="ssl_verify_depth">
1076
<syntax><value>число</value></syntax>
1077
<default>1</default>
1078
<context>stream</context>
1079
<context>server</context>
1080
<appeared-in>1.11.8</appeared-in>
1081
1082
<para>
1083
Устанавливает глубину проверки в цепочке клиентских сертификатов.
1084
</para>
1085
1086
</directive>
1087
1088
</section>
1089
1090
1091
<section id="variables" name="Встроенные переменные">
1092
1093
<para>
1094
Модуль <literal>ngx_stream_ssl_module</literal> поддерживает переменные
1095
начиная с версии 1.11.2.
1096
<list type="tag">
1097
1098
<tag-name id="var_ssl_alpn_protocol"><var>$ssl_alpn_protocol</var></tag-name>
1099
<tag-desc>
1100
возвращает протокол, выбранный при помощи ALPN во время операции SSL handshake,
1101
либо пустую строку (1.21.4);
1102
</tag-desc>
1103
1104
<tag-name id="var_ssl_cipher"><var>$ssl_cipher</var></tag-name>
1105
<tag-desc>
1106
возвращает название используемого шифра для установленного SSL-соединения;
1107
</tag-desc>
1108
1109
<tag-name id="var_ssl_ciphers"><var>$ssl_ciphers</var></tag-name>
1110
<tag-desc>
1111
возвращает список шифров, поддерживаемых клиентом (1.11.7).
1112
Известные шифры указаны по имени, неизвестные указаны в шестнадцатеричном виде,
1113
например:
1114
<example>
1115
AES128-SHA:AES256-SHA:0x00ff
1116
</example>
1117
<note>
1118
Переменная полностью поддерживается при использовании OpenSSL версии 1.0.2
1119
и выше.
1120
При использовании более старых версий переменная доступна
1121
только для новых сессий и может содержать только известные шифры.
1122
</note>
1123
</tag-desc>
1124
1125
<tag-name id="var_ssl_client_cert"><var>$ssl_client_cert</var></tag-name>
1126
<tag-desc>
1127
возвращает клиентский сертификат в формате PEM
1128
для установленного SSL-соединения, перед каждой строкой которого, кроме первой,
1129
вставляется символ табуляции (1.11.8);
1130
</tag-desc>
1131
1132
<tag-name id="var_ssl_client_fingerprint"><var>$ssl_client_fingerprint</var></tag-name>
1133
<tag-desc>
1134
возвращает SHA1-отпечаток клиентского сертификата
1135
для установленного SSL-соединения (1.11.8);
1136
</tag-desc>
1137
1138
<tag-name id="var_ssl_client_i_dn"><var>$ssl_client_i_dn</var></tag-name>
1139
<tag-desc>
1140
возвращает строку “issuer DN” клиентского сертификата
1141
для установленного SSL-соединения согласно
1142
<link url="https://datatracker.ietf.org/doc/html/rfc2253">RFC 2253</link> (1.11.8);
1143
</tag-desc>
1144
1145
<tag-name id="var_ssl_client_raw_cert"><var>$ssl_client_raw_cert</var>
1146
</tag-name>
1147
<tag-desc>
1148
возвращает клиентский сертификат в формате PEM
1149
для установленного SSL-соединения (1.11.8);
1150
</tag-desc>
1151
1152
<tag-name id="var_ssl_client_s_dn"><var>$ssl_client_s_dn</var></tag-name>
1153
<tag-desc>
1154
возвращает строку “subject DN” клиентского сертификата
1155
для установленного SSL-соединения согласно
1156
<link url="https://datatracker.ietf.org/doc/html/rfc2253">RFC 2253</link> (1.11.8);
1157
</tag-desc>
1158
1159
<tag-name id="var_ssl_client_serial"><var>$ssl_client_serial</var></tag-name>
1160
<tag-desc>
1161
возвращает серийный номер клиентского сертификата
1162
для установленного SSL-соединения (1.11.8);
1163
</tag-desc>
1164
1165
<tag-name id="var_ssl_client_sigalg"><var>$ssl_client_sigalg</var></tag-name>
1166
<tag-desc>
1167
возвращает
1168
<link url="https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-16">алгоритм подписи</link>
1169
клиентского сертификата для установленного SSL-соединения (1.29.3).
1170
<note>
1171
Переменная поддерживается при использовании OpenSSL версии 3.5 и выше.
1172
При использовании более старых версий значением переменной будет пустая строка.
1173
</note>
1174
<note>
1175
Переменная доступна только для новых сессий.
1176
</note>
1177
</tag-desc>
1178
1179
<tag-name id="var_ssl_client_v_end"><var>$ssl_client_v_end</var></tag-name>
1180
<tag-desc>
1181
возвращает дату окончания срока действия клиентского сертификата (1.11.8);
1182
</tag-desc>
1183
1184
<tag-name id="var_ssl_client_v_remain"><var>$ssl_client_v_remain</var></tag-name>
1185
<tag-desc>
1186
возвращает число дней,
1187
оставшихся до истечения срока действия клиентского сертификата (1.11.8);
1188
</tag-desc>
1189
1190
<tag-name id="var_ssl_client_v_start"><var>$ssl_client_v_start</var></tag-name>
1191
<tag-desc>
1192
возвращает дату начала срока действия клиентского сертификата (1.11.8);
1193
</tag-desc>
1194
1195
<tag-name id="var_ssl_client_verify"><var>$ssl_client_verify</var></tag-name>
1196
<tag-desc>
1197
возвращает результат проверки клиентского сертификата (1.11.8):
1198
<literal>SUCCESS</literal>”, “<literal>FAILED:</literal><value>reason</value>
1199
и, если сертификат не был предоставлен, “<literal>NONE</literal>”;
1200
</tag-desc>
1201
1202
<tag-name id="var_ssl_curve"><var>$ssl_curve</var></tag-name>
1203
<tag-desc>
1204
возвращает согласованную кривую, использованную для
1205
обмена ключами во время операции SSL handshake (1.21.5).
1206
Известные кривые указаны по имени, неизвестные указаны в шестнадцатеричном виде,
1207
например:
1208
<example>
1209
prime256v1
1210
</example>
1211
<note>
1212
Переменная поддерживается при использовании OpenSSL версии 3.0 и выше.
1213
При использовании более старых версий значением переменной будет пустая строка.
1214
</note>
1215
</tag-desc>
1216
1217
<tag-name id="var_ssl_curves"><var>$ssl_curves</var></tag-name>
1218
<tag-desc>
1219
возвращает список кривых, поддерживаемых клиентом (1.11.7).
1220
Известные кривые указаны по имени, неизвестные указаны в шестнадцатеричном виде,
1221
например:
1222
<example>
1223
0x001d:prime256v1:secp521r1:secp384r1
1224
</example>
1225
<note>
1226
Переменная поддерживается при использовании OpenSSL версии 1.0.2 и выше.
1227
При использовании более старых версий значением переменной будет пустая строка.
1228
</note>
1229
<note>
1230
Переменная доступна только для новых сессий.
1231
</note>
1232
</tag-desc>
1233
1234
<tag-name id="var_ssl_ech_outer_server_name"><var>$ssl_ech_outer_server_name</var></tag-name>
1235
<tag-desc>
1236
возвращает публичное имя сервера, запрошенное через
1237
<link url="http://en.wikipedia.org/wiki/Server_Name_Indication">SNI</link>
1238
если TLS 1.3 <link id="ssl_ech_file">ECH</link> был принят,
1239
иначе “” (1.29.4);
1240
</tag-desc>
1241
1242
<tag-name id="var_ssl_ech_status"><var>$ssl_ech_status</var></tag-name>
1243
<tag-desc>
1244
возвращает результат обработки TLS 1.3 <link id="ssl_ech_file">ECH</link>:
1245
<literal>FAILED</literal>”,
1246
<literal>BACKEND</literal>”,
1247
<literal>GREASE</literal>”,
1248
<literal>SUCCESS</literal>” или
1249
<literal>NOT_TRIED</literal>” (1.29.4);
1250
<note>
1251
В настоящее время переменная поддерживается при использовании
1252
<link url="https://github.com/openssl/openssl/tree/feature/ech">ветки разработки ECH</link>
1253
и, таким образом, может измениться.
1254
В остальных случаях значением переменной будет пустая строка.
1255
</note>
1256
</tag-desc>
1257
1258
<tag-name id="var_ssl_protocol"><var>$ssl_protocol</var></tag-name>
1259
<tag-desc>
1260
возвращает протокол установленного SSL-соединения;
1261
</tag-desc>
1262
1263
<tag-name id="var_ssl_server_name"><var>$ssl_server_name</var></tag-name>
1264
<tag-desc>
1265
возвращает имя сервера, запрошенное через
1266
<link url="http://en.wikipedia.org/wiki/Server_Name_Indication">SNI</link>;
1267
</tag-desc>
1268
1269
<tag-name id="var_ssl_session_id"><var>$ssl_session_id</var></tag-name>
1270
<tag-desc>
1271
возвращает идентификатор сессии установленного SSL-соединения;
1272
</tag-desc>
1273
1274
<tag-name id="var_ssl_session_reused"><var>$ssl_session_reused</var></tag-name>
1275
<tag-desc>
1276
возвращает “<literal>r</literal>”, если сессия была использована повторно,
1277
иначе “<literal>.</literal>”.
1278
</tag-desc>
1279
1280
<tag-name id="var_ssl_sigalg"><var>$ssl_sigalg</var></tag-name>
1281
<tag-desc>
1282
возвращает
1283
<link url="https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-16">алгоритм подписи</link>
1284
сертификата сервера для установленного SSL-соединения (1.29.3).
1285
<note>
1286
Переменная поддерживается при использовании OpenSSL версии 3.5 и выше.
1287
При использовании более старых версий значением переменной будет пустая строка.
1288
</note>
1289
<note>
1290
Переменная доступна только для новых сессий.
1291
</note>
1292
</tag-desc>
1293
1294
</list>
1295
</para>
1296
1297
</section>
1298
1299
</module>
1300
1301