view xml/ru/docs/http/ngx_http_ssl_module.xml @ 383:a73fa21add8a

Removed a misleading sentence.
author Ruslan Ermilov <ru@nginx.com>
date Wed, 01 Feb 2012 05:56:34 +0000
parents f13435414ed8
children b83d332fbdaa
line wrap: on
line source

<?xml version="1.0"?>

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

<module name="Модуль ngx_http_ssl_module"
        link="/ru/docs/http/ngx_http_ssl_module.html"
        lang="ru">

<section id="summary">

<para>
Модуль <literal>ngx_http_ssl_module</literal> обеспечивает работу
по протоколу HTTPS.
</para>

<para>
По умолчанию этот модуль не собирается, его сборку необходимо
разрешить с помощью конфигурационного параметра
<literal>--with-http_ssl_module</literal>.
<note>
Для сборки и работы этого модуля нужна библиотека
<link url="http://www.openssl.org">OpenSSL</link>.
</note>
</para>

</section>


<section id="example" name="Пример конфигурации">

<para>
Для уменьшения загрузки процессора рекомендуется
<list type="bullet">

<listitem>
установить число рабочих процессов равным числу процессоров,
</listitem>

<listitem>
разрешить keep-alive соединения,
</listitem>

<listitem>
включить разделяемый кэш сессий,
</listitem>

<listitem>
выключить встроенный кэш сессий
</listitem>

<listitem>
и, возможно, увеличить время жизни сессии (по умолчанию 5 минут):
</listitem>

</list>

<example>
<emphasis>worker_processes 2;</emphasis>

http {

    ...

    server {
        listen              443;
        <emphasis>keepalive_timeout   70;</emphasis>

        ssl                 on;
        ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
        ssl_certificate     /usr/local/nginx/conf/cert.pem;
        ssl_certificate_key /usr/local/nginx/conf/cert.key;
        <emphasis>ssl_session_cache   shared:SSL:10m;</emphasis>
        <emphasis>ssl_session_timeout 10m;</emphasis>

        ...
    }
</example>
</para>

</section>


<section id="directives" name="Директивы">

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

<para>
Разрешает протокол HTTPS для данного виртуального сервера.
</para>

</directive>


<directive name="ssl_certificate">
<syntax><value>файл</value></syntax>
<default/>
<context>http</context>
<context>server</context>

<para>
Указывает файл с сертификатом в формате PEM
для данного виртуального сервера.
Если вместе с основным сертификатом нужно указать промежуточные,
то они должны находиться в этом же файле в следующем порядке — сначала
основной сертификат, а затем промежуточные.
В этом же файле может находиться секретный ключ в формате PEM.
</para>

<para>
Нужно иметь в виду, что из-за ограничения протокола HTTPS
виртуальные серверы должны слушать на разных IP-адресах:
<example>
server {
    listen          192.168.1.1:443;
    server_name     one.example.com;
    ssl_certificate /usr/local/nginx/conf/one.example.com.cert;
    ...
}

server {
    listen          192.168.1.2:443;
    server_name     two.example.com;
    ssl_certificate /usr/local/nginx/conf/two.example.com.cert;
    ...
}
</example>
иначе для второго сайта будет выдаваться
<link doc="configuring_https_servers.xml"
    id="name_based_https_servers">сертификат первого сервера</link>.
</para>

</directive>


<directive name="ssl_certificate_key">
<syntax><value>файл</value></syntax>
<default/>
<context>http</context>
<context>server</context>

<para>
Указывает файл с секретным ключом в формате PEM
для данного виртуального сервера.
</para>

</directive>


<directive name="ssl_ciphers">
<syntax><value>шифры</value></syntax>
<default>HIGH:!ADH:!MD5</default>
<context>http</context>
<context>server</context>

<para>
Описывает разрешённые шифры.
Шифры задаются в формате, поддерживаемом библиотекой
OpenSSL, например:
<example>
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
</example>
</para>

<para>
Полный список можно посмотреть с помощью команды
“<command>openssl ciphers</command>”.
</para>

</directive>


<directive name="ssl_client_certificate">
<syntax><value>файл</value></syntax>
<default/>
<context>http</context>
<context>server</context>

<para>
Указывает файл с сертификатами CA в формате PEM, используемыми для
для проверки клиентских сертификатов.
</para>

</directive>


<directive name="ssl_crl">
<syntax><value>файл</value></syntax>
<default/>
<context>http</context>
<context>server</context>
<appeared-in>0.8.7</appeared-in>

<para>
Указывает файл с отозванными сертификатами (CRL)
в формате PEM, используемыми для проверки клиентских сертификатов.
</para>

</directive>


<directive name="ssl_dhparam">
<syntax><value>файл</value></syntax>
<default/>
<context>http</context>
<context>server</context>
<appeared-in>0.7.2</appeared-in>

<para>
Указывает файл с параметрами для шифров с обменом EDH-ключами.
</para>

</directive>


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

<para>
Указывает, чтобы при использовании протоколов SSLv3 и TLS
серверные шифры были более приоритетны, чем клиентские.
</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>http</context>
<context>server</context>

<para>
Разрешает указанные протоколы.
Параметры <literal>TLSv1.1</literal> и <literal>TLSv1.2</literal> работают
только при использовании библиотеки OpenSSL версии 1.0.1 и выше.
<note>
Параметры <literal>TLSv1.1</literal> и <literal>TLSv1.2</literal> поддерживаются
только начиная с версии 1.1.13, поэтому при использовании OpenSSL версии 1.0.1
и выше на старых версиях nginx эти протоколы работать будут, однако их нельзя
будет отключить.
</note>
</para>

</directive>


<directive name="ssl_session_cache">
<syntax>
    <literal>off</literal> |
    <literal>none</literal> |
    [<literal>builtin</literal>[:<value>размер</value>]]
    [<literal>shared</literal>:<value>название</value>:<value>размер</value>]</syntax>
<default>none</default>
<context>http</context>
<context>server</context>

<para>
Задаёт тип и размеры кэшей для хранения параметров сессий.
Тип кэша может быть следующим:
<list type="tag">

<tag-name><literal>off</literal></tag-name>
<tag-desc>
жёсткое запрещение использования кэша сессий:
nginx явно говорит клиенту, что сессии не могут использоваться повторно.
</tag-desc>

<tag-name><literal>none</literal></tag-name>
<tag-desc>
мягкое запрещение использования кэша сессий:
nginx говорит клиенту, что сессии могут использоваться повторно, но
на самом деле не используются.
</tag-desc>

<tag-name><literal>builtin</literal></tag-name>
<tag-desc>
встроенный в OpenSSL кэш, используется в рамках только одного рабочего процесса.
Размер кэша задаётся в сессиях.
Если размер не задан, то он равен 20480 сессиям.
Использование встроенного кэша может вести к фрагментации памяти.
</tag-desc>

<tag-name><literal>shared</literal></tag-name>
<tag-desc>
разделяемый между всеми рабочими процессами.
Размер кэша задаётся в байтах, в 1 мегабайт может поместиться
около 4000 сессий.
У каждого разделяемого кэша должно быть произвольное название.
Кэш с одинаковым названием может использоваться в нескольких
виртуальных серверах.
</tag-desc>

</list>
</para>

<para>
Можно использовать одновременно оба типа кэша, например:
<example>
ssl_session_cache builtin:1000 shared:SSL:10m;
</example>
однако использование только разделяемого кэша без встроенного должно
быть более эффективным.
</para>

</directive>


<directive name="ssl_session_timeout">
<syntax><value>время</value></syntax>
<default>5m</default>
<context>http</context>
<context>server</context>

<para>
Задаёт время, в течение которого клиент может повторно
использовать параметры сессии, хранящейся в кэше.
</para>

</directive>


<directive name="ssl_verify_client">
<syntax>
    <literal>on</literal> | <literal>off</literal> |
    <literal>optional</literal></syntax>
<default>off</default>
<context>http</context>
<context>server</context>

<para>
Разрешает проверку клиентских сертификатов.
Параметр <literal>optional</literal> (0.8.7+) запрашивает сертификат клиента
и проверяет его, если он предоставлен.
Результат проверки можно узнать в переменной <var>$ssl_client_verify</var>.
</para>

</directive>


<directive name="ssl_verify_depth">
<syntax><value>число</value></syntax>
<default>1</default>
<context>http</context>
<context>server</context>

<para>
Устанавливает глубину проверки в цепочке клиентских сертификатов.
</para>

</directive>

</section>


<section id="errors" name="Обработка ошибок">

<para>
Модуль <literal>ngx_http_ssl_module</literal> поддерживает несколько
нестандартных кодов ошибок, которые можно использовать для
перенаправления с помощью директивы
<link doc="ngx_http_core_module.xml" id="error_page"/>:
<list type="tag">

<tag-name>495</tag-name>
<tag-desc>
при проверке клиентского сертификата произошла ошибка;
</tag-desc>

<tag-name>496</tag-name>
<tag-desc>
клиент не предоставил требуемый сертификат;
</tag-desc>

<tag-name>497</tag-name>
<tag-desc>
обычный запрос был послан на порт HTTPS.
</tag-desc>

</list>
</para>

<para>
Перенаправление делается после того, как запрос полностью разобран
и доступны такие переменные, как <var>$request_uri</var>,
<var>$uri</var>, <var>$args</var> и прочие.
</para>

</section>


<section id="variables" name="Встроенные переменные">

<para>
Модуль <literal>ngx_http_ssl_module</literal> поддерживает
несколько встроенных переменных:
<list type="tag">

<tag-name><var>$ssl_cipher</var></tag-name>
<tag-desc>
возвращает строку используемых шифров для установленного SSL-соединения;
</tag-desc>

<tag-name><var>$ssl_client_cert</var></tag-name>
<tag-desc>
возвращает клиентский сертификат
для установленного SSL-соединения в формате PEM
перед каждой строкой которого, кроме первой, вставляется символ табуляции;
предназначена для использования в директиве
<link doc="ngx_http_proxy_module.xml" id="proxy_set_header"/>;
</tag-desc>

<tag-name><var>$ssl_client_raw_cert</var></tag-name>
<tag-desc>
возвращает клиентский сертификат
для установленного SSL-соединения в формате PEM;
</tag-desc>

<tag-name><var>$ssl_client_serial</var></tag-name>
<tag-desc>
возвращает серийный номер клиентского сертификата
для установленного SSL-соединения;
</tag-desc>

<tag-name><var>$ssl_client_s_dn</var></tag-name>
<tag-desc>
возвращает строку “subject DN” клиентского сертификата
для установленного SSL-соединения;
</tag-desc>

<tag-name><var>$ssl_client_i_dn</var></tag-name>
<tag-desc>
возвращает строку “issuer DN” клиентского сертификата
для установленного SSL-соединения;
</tag-desc>

<tag-name><var>$ssl_client_verify</var></tag-name>
<tag-desc>
возвращает результат проверки клиентского сертификата:
“<literal>SUCCESS</literal>”, “<literal>FAILED</literal>” и,
если сертификат не был предоставлен — “<literal>NONE</literal>”;
</tag-desc>

<tag-name><var>$ssl_protocol</var></tag-name>
<tag-desc>
возвращает протокол установленного SSL-соединения;
</tag-desc>

<tag-name><var>$ssl_session_id</var></tag-name>
<tag-desc>
возвращает идентификатор сессии установленного SSL-соединения.
</tag-desc>

</list>
</para>

</section>

</module>