Proxy HTTPS Client Certificate
Содержание |
Обзор
Эта функция расширяет возможности прокси-модуля nginx, поддерживая установку https-соединения с backend-сервером с указанными пользовательскими сертификатами.
Эта функция в основном используется, когда backend сервер разрешает "Client Certificate Verification".
Кроме того, можно использовать обратную аутентификацию HTTPS, проверяя сертификат сервера установкой сертификата CA в SEnginx.
Эта функция появилась в версии 1.5.13
Директивы
proxy_ssl_certificate
Синтаксис | proxy_ssl_certificate file; |
По умолчанию | |
Контекст | http/server/location |
Указывает сертификат формата PEM, который используется для установки https-соединения с backend сервером. Эта директива подобна директиве ssl_certificate в nginx.
proxy_ssl_certificate_key
Синтаксис | proxy_ssl_certificate_key file; |
По умолчанию | |
Контекст | http/server/location |
Указывает секретный ключ в формате PEM. Эта директива подобна директиве ssl_certificate_key в nginx.
proxy_ssl_verify_server
Синтаксис | proxy_ssl_verify_server off | on | optional | optional_no_ca; |
По умолчанию | off |
Контекст | http/server/location |
Разрешает проверку серверных сертификатов. Параметры такие же, как у директивы ssl_verify_client в nginx.
proxy_ssl_verify_depth
Синтаксис | proxy_ssl_verify_depth number; |
По умолчанию | 1 |
Контекст | http/server/location |
Устанавливает глубину проверки в цепочке серверных сертификатов. Эта директива подобна директиве ssl_verify_depth в nginx.
proxy_ssl_server_certificate
Синтаксис | proxy_ssl_server_certificate file; |
По умолчанию | |
Контекст | http/server/location |
Указывает файл в формате PEM с доверенными CA сертификатами, которые используются для проверки серверных сертификатов. Эта директива подобна директиве ssl_client_certificate в nginx.
Примеры
Создайте следующие сертификаты/ключи с помощью команды openssl:
- ca.crt
- server.crt/server.key
- client.crt/client.key
server.crt и client.crt сгенерированы с ca.crt.
server.key и client.key - секретные ключи для соответствующих файлов crt. Скопируйте server.crt/server.key/ca.crt на https backend сервер. Скопируйте client.crt/client.key/ca.crt на сервер SEnginx, работающий в качестве reverse proxy.
Пример проксирования на Backend сервер c разрешенной верификацией
Создайте блок server на https backend сервере и разрешите верификацию. Следующий пример для SEnginx/nginx, но вы можете использовать другой веб-сервер:
server { listen 443 ssl; ssl_certificate certs/server.crt; ssl_certificate_key certs/server.key; ssl_verify_client on; ssl_client_certificate certs/ca.crt; ... }
Конфигурация SEnginx в качестве reverse proxy сервера:
backend { server some-ip:443; } server { listen 80; location / { proxy_ssl_certificate certs/client.crt; proxy_ssl_certificate_key certs/client.key; proxy_pass https://backend; } }
Пример обратной HTTPS аутентификации
Конфигурация backend сервера не меняется. Далее конфигурация reverse proxy сервера:
backend { server some-ip:443; } server { listen 80; location / { proxy_ssl_certificate certs/client.crt; proxy_ssl_certificate_key certs/client.key; proxy_ssl_verify_server on; proxy_ssl_server_certificate certs/ca.crt; proxy_pass https://backend; } }