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;
: ...
: }
[edit] ssl
syntax: ssl [on|off]
default: ssl off
context: main, server
Директива разрешает протокол HTTPS для данного виртуального сервера.
[edit] ssl_certificate
syntax: ssl_certificate файл
default: ssl_certificate cert.pem
context: main, server
Директива указывает файл с сертификатом в формате PEM для данного виртуального сервера. В этом же файле могут находиться другие сертификаты, а также секретный ключ в формате PEM.
[edit] ssl_certificate_key
syntax: ssl_certificate_key файл
default: ssl_certificate_key cert.pem
context: main, server
Директива указывает файл с секретным ключом в формате PEM для данного виртуального сервера.
[edit] ssl_client_certificate
syntax: ssl_client_certificate файл
default: нет
context: main, server
Директива указывает файл с сертификатами CA в формате PEM, используемыми для для проверки клиентских сертификатов.
[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.
[edit] ssl_prefer_server_ciphers
syntax: ssl_prefer_server_ciphers [on|off]
default: ssl_prefer_server_ciphers off
context: main, server
Директива указывает, чтобы при использовании протоколов SSLv3 и TLSv1 серверные шифры были более приоритетны, чем клиентские.
[edit] ssl_protocols
syntax: ssl_protocols [SSLv2] [SSLv3] [TLSv1]
default: ssl_protocols SSLv2 SSLv3 TLSv1
context: main, server
Директива разрешает указанные протоколы.
[edit] ssl_verify_client
syntax: ssl_verify_client on|off
default: ssl_verify_client off
context: main, server
Директива разрешает проверку клиентских сертификатов.
[edit] ssl_verify_depth
syntax: ssl_verify_depth число
default: ssl_verify_depth 1
context: main, server
Директива устанвливает глубину проверку в цепочке клиентских сертификатов.
[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-соединения;









