Я пытаюсь использовать nginx в качестве обратного прокси-сервера для внутреннего веб-сервера под управлением Tomcat, в котором размещен интерфейс для нашей ERP-системы.nginx - проверка подлинности обратного прокси-сервера
Он уже отлично работает: я могу прекрасно подключиться к серверу nginx (который заблокирован в нашей сети, другой VLAN, брандмауэре и т. Д. И т. Д. И т. Д.), А затем обратный прокси-сервер на мой ERP-сервер.
Однако я хочу добавить дополнительный уровень защиты, требуя от пользователей иметь цифровой сертификат на своем компьютере, чтобы они могли получить доступ к первому (nginx) серверу. Сертификат не используется/необходим для внутреннего сервера.
Я прошел через этот учебник http://nategood.com/client-side-certificate-authentication-in-ngi , который позволил мне сгенерировать самозаверяющие сертификаты и все остальное.
При использовании ssl_verify_client необязательно по конфигурации nginx, я могу нормально подключаться к внутреннему серверу, но сертификат не требуется/требуется.
Когда я включаю его ssl_verify_client на, все доступы не затем блокируют
400 Bad Request
No required SSL certificate was sent
Независимо от того, какой браузер я использую (Chrome, IE, Edge, Firefox). Конечно, я поставил все сертификаты/цепочку на свой клиентский компьютер, но никаких сертификатов не запрашивается ни в одном браузере. Что мне не хватает?
Вот мой полный Nginx конфигурации:
server {
listen 443;
ssl on;
server_name 103vportal;
ssl_password_file /etc/nginx/certs/senha.txt;
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
ssl_client_certificate /etc/nginx/certs/ca.crt;
ssl_verify_client on;
location/{
proxy_pass http://10.3.0.244:16030;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300;
proxy_send_timeout 300;
}
}
Ваш сертификат клиента подписан «ca.crt» и указан в ваших личных сертификатах * в браузере? И вы очистили кеш браузера с момента реконфигурации сервера? –
@ RichardSmith привет, спасибо за помощь. Да, он подписан ca.crt согласно учебнику. Тем не менее, это действительно странно, поскольку даже форсирование (сертификаты Internet Explorer) оно не отображается в разделе «Личные сертификаты», а в разделе «Средние полномочия». Я также заметил это, но я пошел за учебником к письму, так как это мой первый раз, когда я это реализовал. Может быть, сертификат не «клиент/личный»? Любой способ генерировать его через openssl? –
Я создаю файл PKCS # 12 с паролем, чтобы получить закрытый ключ и подписанный сертификат в списке личных сертификатов браузера. Промежуточный магазин сертификатов не будет работать для вас. –