Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/mail/ngx_mail_ssl_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) 2006, 2007 Anton Yuzhaninov
5
Copyright (C) Nginx, Inc.
6
-->
7
8
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
9
10
<module name="Модуль ngx_mail_ssl_module"
11
link="/ru/docs/mail/ngx_mail_ssl_module.html"
12
lang="ru"
13
rev="34">
14
15
<section id="summary">
16
17
<para>
18
Модуль <literal>ngx_mail_ssl_module</literal> обеспечивает работу
19
почтового прокси-сервера по протоколу SSL/TLS.
20
</para>
21
22
<para>
23
По умолчанию этот модуль не собирается, его сборку необходимо
24
разрешить с помощью конфигурационного параметра
25
<literal>--with-mail_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
mail {
66
67
...
68
69
server {
70
listen 993 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">
90
<syntax><literal>on</literal> | <literal>off</literal></syntax>
91
<default>off</default>
92
<context>mail</context>
93
<context>server</context>
94
95
<para>
96
Эта директива устарела в версии 1.15.0
97
и была удалена в версии 1.25.1.
98
Вместо неё следует
99
использовать параметр <literal>ssl</literal>
100
директивы <link doc="ngx_mail_core_module.xml" id="listen"/>.
101
</para>
102
103
</directive>
104
105
106
<directive name="ssl_certificate">
107
<syntax><value>файл</value></syntax>
108
<default/>
109
<context>mail</context>
110
<context>server</context>
111
112
<para>
113
Указывает <value>файл</value> с сертификатом в формате PEM
114
для данного сервера.
115
Если вместе с основным сертификатом нужно указать промежуточные,
116
то они должны находиться в этом же файле в следующем порядке: сначала
117
основной сертификат, а затем промежуточные.
118
В этом же файле может находиться секретный ключ в формате PEM.
119
</para>
120
121
<para>
122
Начиная с версии 1.11.0
123
эта директива может быть указана несколько раз
124
для загрузки сертификатов разных типов, например RSA и ECDSA:
125
<example>
126
server {
127
listen 993 ssl;
128
129
ssl_certificate example.com.rsa.crt;
130
ssl_certificate_key example.com.rsa.key;
131
132
ssl_certificate example.com.ecdsa.crt;
133
ssl_certificate_key example.com.ecdsa.key;
134
135
...
136
}
137
</example>
138
<note>
139
Возможность задавать отдельные
140
<link doc="../http/configuring_https_servers.xml" id="chains">цепочки
141
сертификатов</link>
142
для разных сертификатов
143
есть только в OpenSSL 1.0.2 и выше.
144
Для более старых версий следует указывать только одну цепочку сертификатов.
145
</note>
146
</para>
147
148
<para id="ssl_certificate_data">
149
Вместо <value>файла</value> можно указать значение
150
<literal>data</literal>:<value>сертификат</value> (1.15.10),
151
при котором сертификат загружается
152
без использования промежуточных файлов.
153
При этом следует учитывать, что ненадлежащее использование
154
подобного синтаксиса может быть небезопасно,
155
например данные секретного ключа могут попасть в
156
<link doc="../ngx_core_module.xml" id="error_log">лог ошибок</link>.
157
</para>
158
159
</directive>
160
161
162
<directive name="ssl_certificate_compression">
163
<syntax><literal>on</literal> | <literal>off</literal></syntax>
164
<default>off</default>
165
<context>mail</context>
166
<context>server</context>
167
<appeared-in>1.29.1</appeared-in>
168
169
<para>
170
Разрешает
171
<link url="https://datatracker.ietf.org/doc/html/rfc8879">сжатие</link>
172
серверных сертификатов при использовании TLS 1.3.
173
<note>
174
Директива поддерживается при использовании OpenSSL 3.2 и выше;
175
список поддерживаемых алгоритмов сжатия обеспечивается библиотекой.
176
</note>
177
<note>
178
Директива поддерживается при использовании BoringSSL;
179
список поддерживаемых алгоритмов сжатия включает
180
<literal>zlib</literal> (1.29.3).
181
</note>
182
</para>
183
184
</directive>
185
186
187
<directive name="ssl_certificate_key">
188
<syntax><value>файл</value></syntax>
189
<default/>
190
<context>mail</context>
191
<context>server</context>
192
193
<para>
194
Указывает <value>файл</value> с секретным ключом в формате PEM
195
для данного сервера.
196
</para>
197
198
<para>
199
Вместо <value>файла</value> можно указать значение
200
<literal>engine</literal>:<value>имя</value>:<value>id</value> (1.7.9),
201
которое загружает ключ с указанным <value>id</value>
202
из OpenSSL engine с заданным <value>именем</value>.
203
</para>
204
205
<para>
206
Вместо <value>файла</value> можно указать значение
207
<literal>store</literal>:<value>схема</value>:<value>id</value> (1.29.0),
208
которое используется для загрузки ключа с указанным <value>id</value>
209
и зарегистрированной провайдером OpenSSL <value>схемой</value> URI, такой как
210
<link url="https://datatracker.ietf.org/doc/html/rfc7512"><literal>pkcs11</literal></link>.
211
</para>
212
213
<para id="ssl_certificate_key_data">
214
Вместо <value>файла</value> можно указать значение
215
<literal>data</literal>:<value>ключ</value> (1.15.10),
216
при котором секретный ключ загружается
217
без использования промежуточных файлов.
218
При этом следует учитывать, что ненадлежащее использование
219
подобного синтаксиса может быть небезопасно,
220
например данные секретного ключа могут попасть в
221
<link doc="../ngx_core_module.xml" id="error_log">лог ошибок</link>.
222
</para>
223
224
</directive>
225
226
227
<directive name="ssl_ciphers">
228
<syntax><value>шифры</value></syntax>
229
<default>HIGH:!aNULL:!MD5</default>
230
<context>mail</context>
231
<context>server</context>
232
233
<para>
234
Описывает разрешённые шифры.
235
Шифры задаются в формате, поддерживаемом библиотекой
236
OpenSSL, например:
237
<example>
238
ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
239
</example>
240
</para>
241
242
<para>
243
Полный список можно посмотреть с помощью команды
244
<command>openssl ciphers</command>”.
245
</para>
246
247
<para>
248
<note>
249
В предыдущих версиях nginx по умолчанию использовались
250
<link doc="../http/configuring_https_servers.xml" id="compatibility">другие</link>
251
шифры.
252
</note>
253
</para>
254
255
</directive>
256
257
258
<directive name="ssl_client_certificate">
259
<syntax><value>файл</value></syntax>
260
<default/>
261
<context>mail</context>
262
<context>server</context>
263
<appeared-in>1.7.11</appeared-in>
264
265
<para>
266
Указывает <value>файл</value> с доверенными сертификатами CA в формате
267
PEM, которые используются для
268
<link id="ssl_verify_client">проверки</link> клиентских сертификатов.
269
</para>
270
271
<para>
272
Список сертификатов будет отправляться клиентам.
273
Если это нежелательно, можно воспользоваться директивой
274
<link id="ssl_trusted_certificate"/>.
275
</para>
276
277
</directive>
278
279
280
<directive name="ssl_conf_command">
281
<syntax><value>имя</value> <value>значение</value></syntax>
282
<default/>
283
<context>mail</context>
284
<context>server</context>
285
<appeared-in>1.19.4</appeared-in>
286
287
<para>
288
Задаёт произвольные конфигурационные
289
<link url="https://www.openssl.org/docs/man1.1.1/man3/SSL_CONF_cmd.html">команды</link>
290
OpenSSL.
291
<note>
292
Директива поддерживается при использовании OpenSSL 1.0.2 и выше.
293
</note>
294
</para>
295
296
<para>
297
На одном уровне может быть указано
298
несколько директив <literal>ssl_conf_command</literal>:
299
<example>
300
ssl_conf_command Options PrioritizeChaCha;
301
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
302
</example>
303
Директивы наследуются с предыдущего уровня конфигурации при условии, что
304
на данном уровне не описаны свои директивы <literal>ssl_conf_command</literal>.
305
</para>
306
307
<para>
308
<note>
309
Следует учитывать, что изменение настроек OpenSSL напрямую
310
может привести к неожиданному поведению.
311
</note>
312
</para>
313
314
</directive>
315
316
317
<directive name="ssl_crl">
318
<syntax><value>файл</value></syntax>
319
<default/>
320
<context>mail</context>
321
<context>server</context>
322
<appeared-in>1.7.11</appeared-in>
323
324
<para>
325
Указывает <value>файл</value> с отозванными сертификатами (CRL)
326
в формате PEM, используемыми для
327
<link id="ssl_verify_client">проверки</link> клиентских сертификатов.
328
Если используются промежуточные сертификаты,
329
их списки CRL должны находиться в этом же файле.
330
</para>
331
332
</directive>
333
334
335
<directive name="ssl_dhparam">
336
<syntax><value>файл</value></syntax>
337
<default/>
338
<context>mail</context>
339
<context>server</context>
340
<appeared-in>0.7.2</appeared-in>
341
342
<para>
343
Указывает <value>файл</value> с параметрами для DHE-шифров.
344
</para>
345
346
<para>
347
По умолчанию параметры не заданы,
348
и соответственно DHE-шифры не будут использоваться.
349
<note>
350
До версии 1.11.0 по умолчанию использовались встроенные параметры.
351
</note>
352
</para>
353
354
</directive>
355
356
357
<directive name="ssl_ecdh_curve">
358
<syntax><value>кривая</value></syntax>
359
<default>auto</default>
360
<context>mail</context>
361
<context>server</context>
362
<appeared-in>1.1.0</appeared-in>
363
<appeared-in>1.0.6</appeared-in>
364
365
<para>
366
Задаёт кривую для ECDHE-шифров.
367
</para>
368
369
<para>
370
При использовании OpenSSL 1.0.2 и выше
371
можно указывать несколько кривых (1.11.0), например:
372
<example>
373
ssl_ecdh_curve prime256v1:secp384r1;
374
</example>
375
</para>
376
377
<para>
378
Специальное значение <literal>auto</literal> (1.11.0) соответствует
379
встроенному в библиотеку OpenSSL списку кривых для OpenSSL 1.0.2 и выше,
380
или <literal>prime256v1</literal> для более старых версий.
381
</para>
382
383
<para>
384
<note>
385
До версии 1.11.0
386
по умолчанию использовалась кривая <literal>prime256v1</literal>.
387
</note>
388
</para>
389
390
<para>
391
<note>
392
При использовании OpenSSL 1.0.2 и выше
393
директива задаёт список кривых, поддерживаемых сервером.
394
Поэтому для работы ECDSA-сертификатов
395
важно, чтобы список включал кривые, используемые в сертификатах.
396
</note>
397
</para>
398
399
</directive>
400
401
402
<directive name="ssl_password_file">
403
<syntax><value>файл</value></syntax>
404
<default/>
405
<context>mail</context>
406
<context>server</context>
407
<appeared-in>1.7.3</appeared-in>
408
409
<para>
410
Задаёт <value>файл</value> с паролями от
411
<link id="ssl_certificate_key">секретных ключей</link>,
412
где каждый пароль указан на отдельной строке.
413
Пароли применяются по очереди в момент загрузки ключа.
414
</para>
415
416
<para>
417
Пример:
418
<example>
419
mail {
420
ssl_password_file /etc/keys/global.pass;
421
...
422
423
server {
424
server_name mail1.example.com;
425
ssl_certificate_key /etc/keys/first.key;
426
}
427
428
server {
429
server_name mail2.example.com;
430
431
# вместо файла можно указать именованный канал
432
ssl_password_file /etc/keys/fifo;
433
ssl_certificate_key /etc/keys/second.key;
434
}
435
}
436
</example>
437
</para>
438
439
</directive>
440
441
442
<directive name="ssl_prefer_server_ciphers">
443
<syntax><literal>on</literal> | <literal>off</literal></syntax>
444
<default>off</default>
445
<context>mail</context>
446
<context>server</context>
447
448
<para>
449
Указывает, чтобы при использовании протоколов SSLv3 и TLS
450
серверные шифры были более приоритетны, чем клиентские.
451
</para>
452
453
</directive>
454
455
456
<directive name="ssl_protocols">
457
<syntax>
458
[<literal>SSLv2</literal>]
459
[<literal>SSLv3</literal>]
460
[<literal>TLSv1</literal>]
461
[<literal>TLSv1.1</literal>]
462
[<literal>TLSv1.2</literal>]
463
[<literal>TLSv1.3</literal>]</syntax>
464
<default>TLSv1.2 TLSv1.3</default>
465
<context>mail</context>
466
<context>server</context>
467
468
<para>
469
Разрешает указанные протоколы.
470
<note>
471
Параметры <literal>TLSv1.1</literal> и <literal>TLSv1.2</literal>
472
(1.1.13, 1.0.12) работают только при использовании OpenSSL 1.0.1 и выше.
473
</note>
474
<note>
475
Параметр <literal>TLSv1.3</literal> (1.13.0) работает только
476
при использовании OpenSSL 1.1.1 и выше.
477
</note>
478
<note>
479
Параметр <literal>TLSv1.3</literal> используется по умолчанию
480
начиная с 1.23.4.
481
</note>
482
</para>
483
484
</directive>
485
486
487
<directive name="ssl_session_cache">
488
<syntax>
489
<literal>off</literal> |
490
<literal>none</literal> |
491
[<literal>builtin</literal>[:<value>размер</value>]]
492
[<literal>shared</literal>:<value>название</value>:<value>размер</value>]</syntax>
493
<default>none</default>
494
<context>mail</context>
495
<context>server</context>
496
497
<para>
498
Задаёт тип и размеры кэшей для хранения параметров сессий.
499
Тип кэша может быть следующим:
500
<list type="tag">
501
502
<tag-name><literal>off</literal></tag-name>
503
<tag-desc>
504
жёсткое запрещение использования кэша сессий:
505
nginx явно сообщает клиенту, что сессии не могут использоваться повторно.
506
</tag-desc>
507
508
<tag-name><literal>none</literal></tag-name>
509
<tag-desc>
510
мягкое запрещение использования кэша сессий:
511
nginx сообщает клиенту, что сессии могут использоваться повторно, но
512
на самом деле не хранит параметры сессии в кэше.
513
</tag-desc>
514
515
<tag-name id="ssl_session_cache_builtin"><literal>builtin</literal></tag-name>
516
<tag-desc>
517
встроенный в OpenSSL кэш, используется в рамках только одного рабочего процесса.
518
Размер кэша задаётся в сессиях.
519
Если размер не задан, то он равен 20480 сессиям.
520
Использование встроенного кэша может вести к фрагментации памяти.
521
</tag-desc>
522
523
<tag-name id="ssl_session_cache_shared"><literal>shared</literal></tag-name>
524
<tag-desc>
525
кэш, разделяемый между всеми рабочими процессами.
526
Размер кэша задаётся в байтах, в 1 мегабайт может поместиться
527
около 4000 сессий.
528
У каждого разделяемого кэша должно быть произвольное название.
529
Кэш с одинаковым названием может использоваться в нескольких
530
серверах.
531
Также он используется для автоматического создания, хранения и
532
периодического обновления ключей TLS session tickets (1.23.2),
533
если они не указаны явно
534
с помощью директивы <link id="ssl_session_ticket_key"/>.
535
</tag-desc>
536
537
</list>
538
</para>
539
540
<para>
541
Можно использовать одновременно оба типа кэша, например:
542
<example>
543
ssl_session_cache builtin:1000 shared:SSL:10m;
544
</example>
545
однако использование только разделяемого кэша без встроенного должно
546
быть более эффективным.
547
</para>
548
549
</directive>
550
551
552
<directive name="ssl_session_ticket_key">
553
<syntax><value>файл</value></syntax>
554
<default/>
555
<context>mail</context>
556
<context>server</context>
557
<appeared-in>1.5.7</appeared-in>
558
559
<para>
560
Задаёт <value>файл</value> с секретным ключом, применяемым при шифровании и
561
расшифровании TLS session tickets.
562
Директива необходима, если один и тот же ключ нужно использовать
563
на нескольких серверах.
564
По умолчанию используется случайно сгенерированный ключ.
565
</para>
566
567
<para>
568
Если указано несколько ключей, то только первый ключ
569
используется для шифрования TLS session tickets.
570
Это позволяет настроить ротацию ключей, например:
571
<example>
572
ssl_session_ticket_key current.key;
573
ssl_session_ticket_key previous.key;
574
</example>
575
</para>
576
577
<para>
578
<value>Файл</value> должен содержать 80 или 48 байт случайных данных
579
и может быть создан следующей командой:
580
<example>
581
openssl rand 80 > ticket.key
582
</example>
583
В зависимости от размера файла для шифрования будет использоваться либо
584
AES256 (для 80-байтных ключей, 1.11.8), либо AES128 (для 48-байтных ключей).
585
</para>
586
587
</directive>
588
589
590
<directive name="ssl_session_tickets">
591
<syntax><literal>on</literal> | <literal>off</literal></syntax>
592
<default>on</default>
593
<context>mail</context>
594
<context>server</context>
595
<appeared-in>1.5.9</appeared-in>
596
597
<para>
598
Разрешает или запрещает возобновление сессий при помощи
599
<link url="https://datatracker.ietf.org/doc/html/rfc5077">TLS session tickets</link>.
600
</para>
601
602
</directive>
603
604
605
<directive name="ssl_session_timeout">
606
<syntax><value>время</value></syntax>
607
<default>5m</default>
608
<context>mail</context>
609
<context>server</context>
610
611
<para>
612
Задаёт время, в течение которого клиент может повторно
613
использовать параметры сессии.
614
</para>
615
616
</directive>
617
618
619
<directive name="ssl_trusted_certificate">
620
<syntax><value>файл</value></syntax>
621
<default/>
622
<context>mail</context>
623
<context>server</context>
624
<appeared-in>1.7.11</appeared-in>
625
626
<para>
627
Задаёт <value>файл</value> с доверенными сертификатами CA в формате PEM,
628
которые используются для
629
<link id="ssl_verify_client">проверки</link> клиентских сертификатов.
630
</para>
631
632
<para>
633
В отличие от <link id="ssl_client_certificate"/>, список этих сертификатов
634
не будет отправляться клиентам.
635
</para>
636
637
</directive>
638
639
640
<directive name="ssl_verify_client">
641
<syntax>
642
<literal>on</literal> | <literal>off</literal> |
643
<literal>optional</literal> | <literal>optional_no_ca</literal></syntax>
644
<default>off</default>
645
<context>mail</context>
646
<context>server</context>
647
<appeared-in>1.7.11</appeared-in>
648
649
<para>
650
Разрешает проверку клиентских сертификатов.
651
Результат проверки передаётся в заголовке
652
<header>Auth-SSL-Verify</header> в запросе
653
<link doc="ngx_mail_auth_http_module.xml" id="auth_http">аутентификации</link>.
654
</para>
655
656
<para>
657
Параметр <literal>optional</literal> запрашивает клиентский
658
сертификат, и если сертификат был предоставлен, проверяет его.
659
</para>
660
661
<para>
662
Параметр <literal>optional_no_ca</literal>
663
запрашивает сертификат
664
клиента, но не требует, чтобы он был подписан доверенным сертификатом CA.
665
Это предназначено для случаев, когда фактическая проверка сертификата
666
осуществляется внешним по отношению к nginx’у сервисом.
667
Содержимое сертификата доступно в запросах,
668
<link doc="ngx_mail_auth_http_module.xml"
669
id="auth_http_pass_client_cert">посылаемых</link>
670
на сервер аутентификации.
671
</para>
672
673
</directive>
674
675
676
<directive name="ssl_verify_depth">
677
<syntax><value>число</value></syntax>
678
<default>1</default>
679
<context>mail</context>
680
<context>server</context>
681
<appeared-in>1.7.11</appeared-in>
682
683
<para>
684
Устанавливает глубину проверки в цепочке клиентских сертификатов.
685
</para>
686
687
</directive>
688
689
690
<directive name="starttls">
691
<syntax>
692
<literal>on</literal> |
693
<literal>off</literal> |
694
<literal>only</literal></syntax>
695
<default>off</default>
696
<context>mail</context>
697
<context>server</context>
698
699
<para>
700
<list type="tag">
701
702
<tag-name><literal>on</literal></tag-name>
703
<tag-desc>
704
разрешить использование команд <literal>STLS</literal> для POP3
705
и <literal>STARTTLS</literal> для IMAP и SMTP;
706
</tag-desc>
707
708
<tag-name><literal>off</literal></tag-name>
709
<tag-desc>
710
запретить использование команд <literal>STLS</literal>
711
и <literal>STARTTLS</literal>;
712
</tag-desc>
713
714
<tag-name><literal>only</literal></tag-name>
715
<tag-desc>
716
требовать предварительного перехода на TLS.
717
</tag-desc>
718
719
</list>
720
</para>
721
722
</directive>
723
724
</section>
725
726
</module>
727
728