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