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;
}
}