2016-06-27 2 views
0

У меня есть определение в Nginx, где для разных портов мне нужны разные параметры проверки клиента SSL.Различные SSL ssl_verify_clent для разных SSL-портов в NGINX не работают

Когда я подключаюсь к: 443/location1, Nginx будет запрашивать сертификат клиента, но сбой «HTTP 400, Bad Request, Require Client Cert». Кажется, что NGINx использует правило сервера для порта 444, которое имеет соединение «ssl_verify_client off», но на маршруте NGinx проверяет, был ли предоставлен сертификат клиента, поскольку это правило для порта 443, говорит, что требуется проверка клиента и то не выполняется запрос HTTP.

Я копался и не могу найти никаких документов вокруг этого. Очевидно, что тот же IP: PORT является проблемой, но все, что до сих пор указывает PORT, я могу изменить конфигурацию, но это, похоже, не так.

server { 
    listen 443; 
    ssl on; 
    ssl_certificate  /etc/nginx/ssl-certs/a.cert; 
    ssl_certificate_key /etc/nginx/ssl-certs/a.key; 
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers   HIGH:!aNULL:!MD5; 
    ssl_client_certificate /etc/nginx/ssl-certs/ca.pem; 
    ssl_verify_client on; 
    location /location1 { 
     [..] 
    } 
} 
server { 
    listen 444; 
    ssl on; 
    ssl_certificate  /etc/nginx/ssl-certs/a.cert; 
    ssl_certificate_key /etc/nginx/ssl-certs/a.key; 
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers   HIGH:!aNULL:!MD5; 
    ssl_verify_client off; 
    location /location2 { 
     [..] 
    } 
} 

ответ

0

В конечном итоге я понял.

Отказ клиента является обязательным, но может произойти либо после установления соединения, либо во время рукопожатия.

  • NGINX позволит выполнить рукопожатие, затем принудительно выполнить, если был проверен клиент .
  • APACHE (по крайней мере, последняя версия, которую я использовал) сбой рукопожатие.
Смежные вопросы