Client certificate auth - моментально 403 Forbidden

kostik78
Уже с Приветом
Posts: 3175
Joined: 17 May 2007 14:07

Re: Client certificate auth - моментально 403 Forbidden

Post by kostik78 »

Девайс и назначение его устраивать MITM для всех машин внутри корпоративной сети. Его устанавливают чтобы видеть весь SSL traffic то бишь ещё один девайс для слежкибезопастности.
Palych
Уже с Приветом
Posts: 13681
Joined: 16 Jan 2001 10:01

Re: Client certificate auth - моментально 403 Forbidden

Post by Palych »

Если бы был proxy, это было видно в адресах пакетов
Palych
Уже с Приветом
Posts: 13681
Joined: 16 Jan 2001 10:01

Re: Client certificate auth - моментально 403 Forbidden

Post by Palych »

Я бы наваял простейшую утилиту на джаве, устанавливающую соединение, запустил её с обоих машин, включив ssl debug.
А может SoapUI умеет трассировать ssl handshake?
Palych
Уже с Приветом
Posts: 13681
Joined: 16 Jan 2001 10:01

Re: Client certificate auth - моментально 403 Forbidden

Post by Palych »

...или curl в verbose mode.
Я бы посмотрел на две вещи:
- какие CA сервер заявляет
- какой именно сертификат посылается клиентом.
kostik78
Уже с Приветом
Posts: 3175
Joined: 17 May 2007 14:07

Re: Client certificate auth - моментально 403 Forbidden

Post by kostik78 »

Palych wrote: 20 Jul 2021 05:22 Если бы был proxy, это было видно в адресах пакетов
Данный девайс вполне способен прикидываться под любым IP как было например в моём случае. Так что я бы так критично не утверждал
Его видно по сертификатам - такие девайсы генерят сертификаты on fly используя корпоративный CA который обычно установлен на всех машинах. Если посмотреть на сертификат сервера то будет видно есть ли «демон» в сети или нет: если сертификат вернулся тот что установлен на сервер то демона нет :)
shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Client certificate auth - моментально 403 Forbidden

Post by shadow7256 »

Спасибо всем за помощь.. продвинулись дальше.

Как оказалось в Windows Server 2012 и выше ввелись изменения насчет того как система работает с TLS и в частности как она работает с клиентскими сертификатами. У нас стоят Windows 10 и поэтмоу у нас все работало без проблем. У клиента Windows Server 2016.

Когда поставили опцию “ClientAuthTrustMode” = 2 в этой ветке реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel

то консольное приложение заработало и серверное приложение теперь валидирует сертификат. Может кому нибудь пригодится для информации.
kostik78
Уже с Приветом
Posts: 3175
Joined: 17 May 2007 14:07

Re: Client certificate auth - моментально 403 Forbidden

Post by kostik78 »

Классно. Удачи :great:
Palych
Уже с Приветом
Posts: 13681
Joined: 16 Jan 2001 10:01

Re: Client certificate auth - моментально 403 Forbidden

Post by Palych »

shadow7256 wrote: 20 Jul 2021 14:28 Спасибо всем за помощь.. продвинулись дальше.

Как оказалось в Windows Server 2012 и выше ввелись изменения насчет того как система работает с TLS и в частности как она работает с клиентскими сертификатами. У нас стоят Windows 10 и поэтмоу у нас все работало без проблем. У клиента Windows Server 2016.

Когда поставили опцию “ClientAuthTrustMode” = 2 в этой ветке реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel

то консольное приложение заработало и серверное приложение теперь валидирует сертификат. Может кому нибудь пригодится для информации.
Чего-то я не догоняю:
2 - Exclusive CA Trust

Requires that a client certificate is chained to an intermediate CA certificate or to a root certificate in the caller-specified trusted issuer store.
Как это?
Вызывающая сторона указывает как проверять её аутентичность?
kostik78
Уже с Приветом
Posts: 3175
Joined: 17 May 2007 14:07

Re: Client certificate auth - моментально 403 Forbidden

Post by kostik78 »

Palych wrote: 20 Jul 2021 20:18
shadow7256 wrote: 20 Jul 2021 14:28 Спасибо всем за помощь.. продвинулись дальше.

Как оказалось в Windows Server 2012 и выше ввелись изменения насчет того как система работает с TLS и в частности как она работает с клиентскими сертификатами. У нас стоят Windows 10 и поэтмоу у нас все работало без проблем. У клиента Windows Server 2016.

Когда поставили опцию “ClientAuthTrustMode” = 2 в этой ветке реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel

то консольное приложение заработало и серверное приложение теперь валидирует сертификат. Может кому нибудь пригодится для информации.
Чего-то я не догоняю:
2 - Exclusive CA Trust

Requires that a client certificate is chained to an intermediate CA certificate or to a root certificate in the caller-specified trusted issuer store.
Как это?
Вызывающая сторона указывает как проверять её аутентичность?
Скорее всего клиентский сертификат выписан банком с ихним CA который не находиться в листе public known CAs. CA банка стоит на компьютере но винда его заблеклистила поэтому поводу. Переключив на 2 винду заставили смотреть на все CA установленные в сторе. Я так понял эту опцию
shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Client certificate auth - моментально 403 Forbidden

Post by shadow7256 »

kostik78 wrote: 20 Jul 2021 21:00 Скорее всего клиентский сертификат выписан банком с ихним CA
да, так и есть. У них все сертификаты подписаны ихним же банком.
CA банка стоит на компьютере
стоит да.
но винда его заблеклистила поэтому поводу.
вот тут непонятно почему.. винда его заблокировала на стороне сервера?

я честно говоря не до конца догнал почему эта опция решила проблему.
kostik78
Уже с Приветом
Posts: 3175
Joined: 17 May 2007 14:07

Re: Client certificate auth - моментально 403 Forbidden

Post by kostik78 »

Я в начале топика упоминал что у Винды есть дополнительная секьюрити для private SSL certs... Я нашел это в одном из топиков про mutual SSL auth но там не говорилось что конкретно и я тогда дальше копать не стал ;) Теперь понятно что имели виду - винда блеклистит private CA and it's chain for mutual auth. Во всяком выглядит именно так в Вашем случае. Опять же это мое понимание ситуации и я не виндовс человек.
Возможно в винде в сторе разные уровни (бакеты) для сертификатов по типу как в *nix. Просто не так прозрачно.
Palych
Уже с Приветом
Posts: 13681
Joined: 16 Jan 2001 10:01

Re: Client certificate auth - моментально 403 Forbidden

Post by Palych »

Согласно спецификации TLS при подключении вываливает список CA которые он признает.
Можно их посмотреть, включив отладку на клиенте.
И сравнить этот список при разных значениях той волшебной опции.
shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Client certificate auth - моментально 403 Forbidden

Post by shadow7256 »

У нас клиент при коннекте сразу же передаёт сертификат поэтому сервер изначально не шлёт клиенту.
Palych
Уже с Приветом
Posts: 13681
Joined: 16 Jan 2001 10:01

Re: Client certificate auth - моментально 403 Forbidden

Post by Palych »

Интересно бы теперь взять какой-нибудь другой сертификат подписанный тем же банком, например от другого сервиса.
И подсунуть в качестве удостоверения личности клиента...
shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Client certificate auth - моментально 403 Forbidden

Post by shadow7256 »

Palych wrote: 21 Jul 2021 05:02 Интересно бы теперь взять какой-нибудь другой сертификат подписанный тем же банком, например от другого сервиса.
И подсунуть в качестве удостоверения личности клиента...
В данном случае Винда скорее всего "разрешит" данный сертификат (если конечно алгоритм проверки винды состоит только в том, чтобы проверить подписан ли данный сертификат банком), но затем вступит в дело Authentication filter (это уже наш код) и он делает более тщательную проверку, в том числе проверяет установлен ли данный сертификат на сервере. Если такого клиентского сертификата нет на сервере, то вернется 403 Forbidden.
Palych
Уже с Приветом
Posts: 13681
Joined: 16 Jan 2001 10:01

Re: Client certificate auth - моментально 403 Forbidden

Post by Palych »

shadow7256 wrote: 21 Jul 2021 16:32
Palych wrote: 21 Jul 2021 05:02 Интересно бы теперь взять какой-нибудь другой сертификат подписанный тем же банком, например от другого сервиса.
И подсунуть в качестве удостоверения личности клиента...
В данном случае Винда скорее всего
...
То есть, проверять работает ли авторизация никто не будет?
shadow7256
Уже с Приветом
Posts: 9392
Joined: 18 Mar 2004 15:11
Location: New York -> FL

Re: Client certificate auth - моментально 403 Forbidden

Post by shadow7256 »

Palych wrote: 21 Jul 2021 17:12
shadow7256 wrote: 21 Jul 2021 16:32
Palych wrote: 21 Jul 2021 05:02 Интересно бы теперь взять какой-нибудь другой сертификат подписанный тем же банком, например от другого сервиса.
И подсунуть в качестве удостоверения личности клиента...
В данном случае Винда скорее всего
...
То есть, проверять работает ли авторизация никто не будет?
проблема была не в авторизации, а в том, что сертификат отвергался операционной системой из за особенностей работы винды с TLS.
User avatar
idle0
Уже с Приветом
Posts: 2846
Joined: 28 Jun 2000 09:01
Location: Milwaukee, WI

Re: Client certificate auth - моментально 403 Forbidden

Post by idle0 »

shadow7256 wrote: 14 Jul 2021 00:07 Уважаемые,

на сервере есть WEB API (self hosted, имплементировано на .NET), которая требует при каждом запросе предьявить валидный Client Certificate.

Но вот какая проблема.

Когда я, с моей машины (А) из браузера пытаюсь вызвать какой то метод из этого API, то браузер мне вываливает окошко с предложением выбрать клиентский сертификат (из того списка сертификатов, что доступны на моей машине). Все четко и правильно. Браузер послал запрос к API, ему пришел ответ что нужен сертификат, он показал мне выбор сертификатов.

Когда я набираю тот же URL в браузере на другой машине (В), то мне сразу же возвращается 403 Forbidden ответ. Никакого диалога с выбором сертификатов я не получаю вообще. :cry:

Если я на стороне сервера (WEB API) отключу требование наличия клиентского сертификата, то я могу запрашивать API с обоих машин без проблем.
Но как только я включаю требование иметь клиентский сертификат, то на все запросы с машины В сразу же получаю 403 Forbidden в ответ.

У меня есть клиентское приложение (тоже на .NET) которое работает с API и в коде в каждом запросе прикладывает сертификат.

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

Как только я запускаю тоже самое приложение на машине В, то в клиентском коде сразу же получаю 403 forbidden ответ.

Получается какая то проблема между машиной В и сервером? Никак не пойму в чем дело..

Пытался Wireshark пронюзхать траффик между В и сервером, но ничего не смог найти.. одни TLS, TCP и UDP пакеты

Если сервер не запрашивает сертификат - то клиент его и не передает

The TLS 1.2 and TLS 1.3 standards clearly describe the sequence of communication inside the TLS handshake. A client certificate can not be send inside the ClientHello since the structure of the ClientHello record does not have a place for it. It is instead sent within a Certificate record, similar to how server certificates are sent. Only a Certificate record from the client is supposed to be sent only after the server explicitly requested it with a CertificateRequest. (see TLS 1.3 spec, sections CertificateRequest, and Certificate for the definition of this behavior)

Вы видите этот CertificateRequest?
moria# show running-config

Return to “Вопросы и новости IT”