RuHttpSslModule

= ngx_http_ssl_module =

Модуль ngx_http_ssl_module обеспечивает работу по протоколу HTTPS. Поддерживается проверка сертификатов клиентов с двумя ограничениями:


 * нельзя задать список отменённых сертификатов (revocation lists);
 * если в файле, заданном директивой ssl_certificate, указана цепочка сертификатов, то при проверке клиентских сертификатов nginx также будет использовать и сертификаты этих промежуточных CA.

По умолчанию модуль не собирается, нужно разрешить его сборку при конфигурировании параметром --with-http_ssl_module. Для сборки и работы этого модуля нужна библиотека OpenSSL. Содержание Пример конфигурации

Директивы

 * [#ssl ssl]
 * [#ssl_certificate ssl_certificate]
 * [#ssl_certificate_key ssl_certificate_key]
 * [#ssl_client_certificate ssl_client_certificate]
 * [#ssl_ciphers ssl_ciphers]
 * [#ssl_prefer_server_ciphers ssl_prefer_server_ciphers]
 * [#ssl_protocols ssl_protocols]
 * [#ssl_verify_client ssl_verify_client]
 * [#ssl_verify_depth ssl_verify_depth]
 * [#ssl_session_timeout ssl_session_timeout]

Обработка ошибок Встроенные переменные Пример конфигурации

Для уменьшения загрузки процессора рекомендуется использовать только один рабочий процесс и разрешать keep-alive соединения:
 * worker_processes 1;


 * http {




 * server {
 * listen              443;
 * ssl                 on;
 * ssl_certificate     /usr/local/nginx/conf/cert.pem;
 * ssl_certificate_key /usr/local/nginx/conf/cert.key;
 * keepalive_timeout   70;


 * }
 * }

ssl
syntax: ssl [on|off] 

default: ssl off

context: main, server''

Директива разрешает протокол HTTPS для данного виртуального сервера.

ssl_certificate
syntax: ssl_certificate файл

default: ssl_certificate cert.pem

context: main, server

Директива указывает файл с сертификатом в формате PEM для данного виртуального сервера. В этом же файле могут находиться другие сертификаты, а также секретный ключ в формате PEM.

ssl_certificate_key
syntax: ssl_certificate_key файл

default: ssl_certificate_key cert.pem

context: main, server

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

ssl_client_certificate
syntax: ssl_client_certificate файл

default: нет

context: main, server

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

ssl_ciphers
syntax: ssl_ciphers шифры

default: ssl_ciphers ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

context: main, server

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

Полный список можно посмотреть с помощью команды openssl ciphers.

ssl_prefer_server_ciphers
syntax: ssl_prefer_server_ciphers [on|off] 

default: ssl_prefer_server_ciphers off

context: main, server

Директива указывает, чтобы при использовании протоколов SSLv3 и TLSv1 серверные шифры были более приоритетны, чем клиентские.

ssl_protocols
syntax: ssl_protocols [SSLv2] [SSLv3]  [TLSv1] 

default: ssl_protocols SSLv2 SSLv3 TLSv1

context: main, server

Директива разрешает указанные протоколы.

ssl_verify_client
syntax: ssl_verify_client on|off

default: ssl_verify_client off

context: main, server

Директива разрешает проверку клиентских сертификатов.

ssl_verify_depth
syntax: ssl_verify_depth число

default: ssl_verify_depth 1

context: main, server

Директива устанвливает глубину проверку в цепочке клиентских сертификатов.

ssl_session_timeout
syntax: ssl_session_timeout время

default: ssl_session_timeout 5m

context: main, server

Директива задаёт время, в течение которого клиент может повторно использовать параметры сессии, хранящейся в кэше. Обработка ошибок

Модуль ngx_http_ssl_module поддерживает несколько нестандартных кодов ошибок, которые можно использовать для перенаправления с помощью директивы error_page:


 * 495 — при проверке клиентского сертификата произошла ошибка;
 * 496 — клиент не предоставил требуемый сертификат;
 * 497 — обычный запрос был послан на порт HTTPS.

Перенаправление делается после того, как запрос полностью разобран и доступны такие переменные, как $request_uri, $uri, $arg и прочие. Встроенные переменные

Модуль ngx_http_ssl_module поддерживает несколько встроенных переменных:


 * $ssl_cipher возвращает строку используемых шифров для установленного SSL-соединения;
 * $ssl_client_serial возвращает серийный номер клиентского сертификата для установленного SSL-соединения;
 * $ssl_client_s_dn возвращает строку subject DN клиентского сертификата для установленного SSL-соединения;
 * $ssl_client_i_dn возвращает строку issuer DN клиентского сертификата для установленного SSL-соединения.
 * $ssl_protocol возвращает протокол установленного SSL-соединения;