FAQ

Page Discussion Edit History

RuHttpSslModule

Contents

[edit] ngx_http_ssl_module

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

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

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


[edit] Директивы

  • [#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;

: ...
: }

Template:Anchor

[edit] ssl

syntax: ssl [on|off]

default: ssl off

context: main, server

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

Template:Anchor

[edit] ssl_certificate

syntax: ssl_certificate файл

default: ssl_certificate cert.pem

context: main, server

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

Template:Anchor

[edit] ssl_certificate_key

syntax: ssl_certificate_key файл

default: ssl_certificate_key cert.pem

context: main, server

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

Template:Anchor

[edit] ssl_client_certificate

syntax: ssl_client_certificate файл

default: нет

context: main, server

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

Template:Anchor

[edit] 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.

Template:Anchor

[edit] ssl_prefer_server_ciphers

syntax: ssl_prefer_server_ciphers [on|off]

default: ssl_prefer_server_ciphers off

context: main, server

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

Template:Anchor

[edit] ssl_protocols

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

default: ssl_protocols SSLv2 SSLv3 TLSv1

context: main, server

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


Template:Anchor

[edit] ssl_verify_client

syntax: ssl_verify_client on|off

default: ssl_verify_client off

context: main, server

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

Template:Anchor

[edit] ssl_verify_depth

syntax: ssl_verify_depth число

default: ssl_verify_depth 1

context: main, server

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


Template:Anchor

[edit] 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-соединения;