view xml/en/docs/mail/ngx_mail_ssl_module.xml @ 1019:2b6a858c60dc

Documented the "ssl_session_ticket_key" directive in http and mail.
author Vladimir Homutov <vl@nginx.com>
date Fri, 22 Nov 2013 16:44:41 +0400
parents 95c3c3bbf1ce
children ac131944d349
line wrap: on
line source

<?xml version="1.0"?>

<!--
  Copyright (C) 2006, 2007 Anton Yuzhaninov
  Copyright (C) Nginx, Inc.
  -->

<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">

<module name="Module ngx_mail_ssl_module"
        link="/en/docs/mail/ngx_mail_ssl_module.html"
        lang="en"
        rev="3">

<section id="summary">

<para>
The <literal>ngx_mail_ssl_module</literal> module provides the necessary
support for a mail proxy server to work with the SSL/TLS protocol.
</para>

<para>
This module is not built by default, it should be enabled with
the <literal>--with-mail_ssl_module</literal>
configuration parameter.
<note>
This module requires the <link url="http://www.openssl.org">OpenSSL</link>
library.
</note>
</para>

</section>


<section id="directives" name="Directives">

<directive name="ssl">
<syntax><literal>on</literal> | <literal>off</literal></syntax>
<default>off</default>
<context>mail</context>
<context>server</context>

<para>
Enables the SSL/TLS protocol for the given server.
</para>

</directive>


<directive name="ssl_certificate">
<syntax><value>file</value></syntax>
<default/>
<context>mail</context>
<context>server</context>

<para>
Specifies a file with the certificate in the PEM format for the given
server.
If intermediate certificates should be specified in addition to a primary
certificate, they should be specified in the same file in the following
order: the primary certificate comes first, then the intermediate certificates.
A secret key in the PEM format may be placed in the same file.
</para>

</directive>


<directive name="ssl_certificate_key">
<syntax><value>file</value></syntax>
<default/>
<context>mail</context>
<context>server</context>

<para>
Specifies a file with the secret key in the PEM format for the given
server.
</para>

</directive>


<directive name="ssl_prefer_server_ciphers">
<syntax><literal>on</literal> | <literal>off</literal></syntax>
<default>off</default>
<context>mail</context>
<context>server</context>

<para>
Specifies that server ciphers should be preferred over client ciphers
when the SSLv3 and TLS protocols are used.
</para>

</directive>


<directive name="ssl_protocols">
<syntax>
    [<literal>SSLv2</literal>]
    [<literal>SSLv3</literal>]
    [<literal>TLSv1</literal>]
    [<literal>TLSv1.1</literal>]
    [<literal>TLSv1.2</literal>]</syntax>
<default>SSLv3 TLSv1 TLSv1.1 TLSv1.2</default>
<context>mail</context>
<context>server</context>

<para>
Enables the specified protocols.
The <literal>TLSv1.1</literal> and <literal>TLSv1.2</literal> parameters work
only when the OpenSSL library of version 1.0.1 or higher is used.
<note>
The <literal>TLSv1.1</literal> and <literal>TLSv1.2</literal> parameters are
supported starting from versions 1.1.13 and 1.0.12
so when the OpenSSL version 1.0.1 or higher
is used on older nginx versions, these protocols work, but cannot
be disabled.
</note>
</para>

</directive>


<directive name="ssl_session_cache">
<syntax>
    <literal>off</literal> |
    <literal>none</literal> |
    [<literal>builtin</literal>[:<value>size</value>]]
    [<literal>shared</literal>:<value>name</value>:<value>size</value>]</syntax>
<default>none</default>
<context>mail</context>
<context>server</context>

<para>
Sets the types and sizes of caches that store session parameters.
A cache can be of any of the following types:
<list type="tag">

<tag-name><literal>off</literal></tag-name>
<tag-desc>
the use of a session cache is strictly prohibited:
nginx explicitly tells a client that sessions may not be reused.
</tag-desc>

<tag-name><literal>none</literal></tag-name>
<tag-desc>
the use of a session cache is gently disallowed:
nginx tells a client that sessions may be reused, but does not
actually store session parameters in the cache.
</tag-desc>

<tag-name><literal>builtin</literal></tag-name>
<tag-desc>
a cache built in OpenSSL; used by one worker process only.
The cache size is specified in sessions.
If size is not given, it is equal to 20480 sessions.
Use of the built-in cache can cause memory fragmentation.
</tag-desc>

<tag-name><literal>shared</literal></tag-name>
<tag-desc>
a cache shared between all worker processes.
The cache size is specified in bytes; one megabyte can store
about 4000 sessions.
Each shared cache should have an arbitrary name.
A cache with the same name can be used in several
servers.
</tag-desc>

</list>
</para>

<para>
Both cache types can be used simultaneously, for example:
<example>
ssl_session_cache builtin:1000 shared:SSL:10m;
</example>
but using only shared cache without the built-in cache should
be more efficient.
</para>

</directive>


<directive name="ssl_session_ticket_key">
<syntax><value>file</value></syntax>
<default/>
<context>mail</context>
<context>server</context>
<appeared-in>1.5.7</appeared-in>

<para>
Sets a <value>file</value> with the secret key used to encrypt
and decrypt TLS session tickets.
The directive is necessary if the same key has to be shared between
multiple servers.
By default, a randomly generated key is used.
</para>

<para>
If several keys are specified, only the first key is
used to encrypt TLS session tickets.
This allows to configure key rotation, for example:
<example>
ssl_session_ticket_key current.key;
ssl_session_ticket_key previous.key;
</example>
</para>

<para>
The <value>file</value> must contain 48 bytes of random data and can
be created using the following command:
<example>
openssl rand 48 > ticket.key
</example>
</para>

</directive>


<directive name="ssl_session_timeout">
<syntax><value>time</value></syntax>
<default>5m</default>
<context>mail</context>
<context>server</context>

<para>
Specifies a time during which a client may reuse the
session parameters stored in a cache.
</para>

</directive>


<directive name="starttls">
<syntax>
  <literal>on</literal> |
  <literal>off</literal> |
  <literal>only</literal></syntax>
<default>off</default>
<context>mail</context>
<context>server</context>

<para>
<list type="tag">

<tag-name><literal>on</literal></tag-name>
<tag-desc>
allow usage of the <literal>STLS</literal> command for the POP3
and the <literal>STARTTLS</literal> command for the IMAP;
</tag-desc>

<tag-name><literal>off</literal></tag-name>
<tag-desc>
deny usage of the <literal>STLS</literal>
and <literal>STARTTLS</literal> commands;
</tag-desc>

<tag-name><literal>only</literal></tag-name>
<tag-desc>
require preliminary TLS transition.
</tag-desc>

</list>
</para>

</directive>

</section>

</module>