Аутентификация клиентского сертификата для приложения за Ingress - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть приложение, которому требуется аутентификация сертификата клиента для определенного API. Если я пытаюсь пройти проверку подлинности с использованием сертификата клиента с использованием POD или URL-адреса службы, он работает нормально.

Как только я пытаюсь сделать это с помощью входного URL-адреса nginx, он перестает работать, что приводит к ошибке 502. Входящие журналы показывают:

2020/02/11 13:07:36 [error] 7285#7285: *8030939 SSL_do_handshake() failed (SSL: error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate:SSL alert number 42) while SSL handshaking to upstream, client: 10.246.226.47, server: sample.domain.com, request: "GET /openidm/info/login HTTP/2.0", upstream: "https://10.246.226.91:8444/openidm/info/login", host: "sample.domain.com"
2020/02/11 13:07:36 [warn] 7285#7285: *8030939 [lua] sticky.lua:134: balance(): failed to get new upstream; using upstream nil while connecting to upstream, client: 10.246.226.47, server: sample.domain.com, request: "GET /openidm/info/login HTTP/2.0", upstream: "https://10.246.226.91:8444/openidm/info/login", host: "sample.domain.com"
2020/02/11 13:07:36 [warn] 7285#7285: *8030939 [lua] balancer.lua:269: balance(): no peer was returned, balancer: sticky_balanced while connecting to upstream, client: 10.246.226.47, server: sample.domain.com, request: "GET /openidm/info/login HTTP/2.0", upstream: "https://10.246.226.91:8444/openidm/info/login", host: "sample.domain.com"
2020/02/11 13:07:36 [crit] 7285#7285: *8030939 connect() to 0.0.0.1:80 failed (22: Invalid argument) while connecting to upstream, client: 10.246.226.47, server: sample.domain.com, request: "GET /openidm/info/login HTTP/2.0", upstream: "https://0.0.0.1:80/openidm/info/login", host: "sample.domain.com"
2020/02/11 13:07:36 [warn] 7285#7285: *8030939 upstream server temporarily disabled while connecting to upstream, client: 10.246.226.47, server: sample.domain.com, request: "GET /openidm/info/login HTTP/2.0", upstream: "https://0.0.0.1:80/openidm/info/login", host: "sample.domain.com"

Я попытался включить аутентификацию сертификата клиента на уровне Ingress, но это нарушает другие API, которые не требуют аутентификации сертификата клиента.

Есть ли способ, которым Ingress не будет пытаться выполнить проверку подлинности сертификата, но передаст сертификат приложению, чтобы приложение могло позаботиться о проверке подлинности сертификата.

...