Client certificate auth - моментально 403 Forbidden
-
- Уже с Приветом
- Posts: 13729
- Joined: 16 Jan 2001 10:01
Re: Client certificate auth - моментально 403 Forbidden
Когда всё это заработает, решится кто-нибудь подставить неправильный сертификат, чтобы убедиться что система защищена от несанкционированного доступа?
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Client certificate auth - моментально 403 Forbidden
Не понятен Ваш скептицизм. Я построил не одну систему где сервисы (как шас принято называть микросервисами) использовали mutual cert auth и авторизация привелегий определялась самим конечным сертификатом через extension. Данные системы работают и довольно безопасны если сделаны верноPalych wrote: 16 Jul 2021 21:43 Когда всё это заработает, решится кто-нибудь подставить неправильный сертификат, чтобы убедиться что система защищена от несанкционированного доступа?

-
- Уже с Приветом
- Posts: 1830
- Joined: 04 Mar 2002 10:01
- Location: Tampa
Re: Client certificate auth - моментально 403 Forbidden
Тут мне не особо понятно, кто виноват-клиент или сервер. Или вообще версия фреймворка.
На опыте- либо надо поднять клиента до TLS 1.2, тогда в исходнике где-нить наверху надо добавить вот это:
или если клиент некомпиляемый, тогда в app.config клиента вписать вот это:
На опыте- либо надо поднять клиента до TLS 1.2, тогда в исходнике где-нить наверху надо добавить вот это:
Code: Select all
const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12;
ServicePointManager.SecurityProtocol = Tls12;
Code: Select all
<configuration>
<startup> <supportedRuntime version="v4.0"/> </startup>
<runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"/> </runtime>
</configuration>
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
-
- Уже с Приветом
- Posts: 9402
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
Обмен данными происходит через TLS 1.2. Написал простой код:VovaK98 wrote: 16 Jul 2021 23:59 Тут мне не особо понятно, кто виноват-клиент или сервер. Или вообще версия фреймворка.
На опыте- либо надо поднять клиента до TLS 1.2, тогда в исходнике где-нить наверху надо добавить вот это:
или если клиент некомпиляемый, тогда в app.config клиента вписать вот это:Code: Select all
const SslProtocols _Tls12 = (SslProtocols)0x00000C00; const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12; ServicePointManager.SecurityProtocol = Tls12;
Code: Select all
<configuration> <startup> <supportedRuntime version="v4.0"/> </startup> <runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"/> </runtime> </configuration>
Code: Select all
X509Certificate2 certificate = GetX509Certificate (certThumbprint);
HttpClientHandler handler = new HttpClientHandler
{
ClientCertificateOptions = ClientCertificateOption.Manual,
SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls
};
handler.ClientCertificates.Add(certificate);
HttpClient request = new HttpClient(handler);
try
{
var result = request.GetAsync(url).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;
Console.WriteLine($"Response: {resultContent}");
}
catch (Exception ex)
{
Console.WriteLine($"Exception while calling: {url}. Error: {ex.GetaAllMessages()}");
}
Exception while calling: {url}. Error: One or more errors occurred while sending the request

-
- Уже с Приветом
- Posts: 13729
- Joined: 16 Jan 2001 10:01
Re: Client certificate auth - моментально 403 Forbidden
То что системы работают - понятно.kostik78 wrote: 16 Jul 2021 23:02Не понятен Ваш скептицизм. Я построил не одну систему где сервисы (как шас принято называть микросервисами) использовали mutual cert auth и авторизация привелегий определялась самим конечным сертификатом через extension. Данные системы работают и довольно безопасны если сделаны верноPalych wrote: 16 Jul 2021 21:43 Когда всё это заработает, решится кто-нибудь подставить неправильный сертификат, чтобы убедиться что система защищена от несанкционированного доступа?![]()
А как Вы определяете что они довольно безопасны?
По поводу моего скепцитизма.
Давайте посмотрим правде в глаза:
Имеется инженер, достаточно грамотный вроде бы.
Он пытается решить элементарную проблему: почему система не пускает того, кто имеет право ей пользоваться.
Для этого он нюхает пакеты, взывает к помощи клуба...
И это не потому что он тупой. Система не предоставляет адекватных средств диагностики.
Имеем классический случай слишком сложного замка: рано или поздно дверь подопрут табуреткой.
К тому же упоминание "нормальных, не самоподписанных сертификатов" делает меня думать что в системе уже проделана дырка, и любой сертификат подписанный CA этого банка предоставит доступ к системе.
-
- Уже с Приветом
- Posts: 13729
- Joined: 16 Jan 2001 10:01
Re: Client certificate auth - моментально 403 Forbidden
Случай из жизни:
Подключались мы к такому сервису. Сервис был в процессе разработки.
Как обычно, тестировали без всяких изотопов, а mutual authentication нашлепнули за неделю до релиза.
У нас заработало, у другого клиента - нет.
Главный инженер проекта покумекал немного, и принял соломоново решение:
Поскольку server authentication работает - система достаточно безопасна. Клиентов аутентифицировать не будем.
Подключались мы к такому сервису. Сервис был в процессе разработки.
Как обычно, тестировали без всяких изотопов, а mutual authentication нашлепнули за неделю до релиза.
У нас заработало, у другого клиента - нет.
Главный инженер проекта покумекал немного, и принял соломоново решение:
Поскольку server authentication работает - система достаточно безопасна. Клиентов аутентифицировать не будем.
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Client certificate auth - моментально 403 Forbidden
Palych wrote: 17 Jul 2021 01:48То что системы работают - понятно.kostik78 wrote: 16 Jul 2021 23:02Не понятен Ваш скептицизм. Я построил не одну систему где сервисы (как шас принято называть микросервисами) использовали mutual cert auth и авторизация привелегий определялась самим конечным сертификатом через extension. Данные системы работают и довольно безопасны если сделаны верноPalych wrote: 16 Jul 2021 21:43 Когда всё это заработает, решится кто-нибудь подставить неправильный сертификат, чтобы убедиться что система защищена от несанкционированного доступа?![]()
А как Вы определяете что они довольно безопасны?
Определяю не я а время (то бишь хакеры) и penetration testing который требуется каждый год для прохождения разных аудитов.
Про допуск любого сертификата подписанного банка это как сделать authorization part. Да все сертификаты определенного chain будут проходить authentication но будут ли все сертификаты данной цепочки проходить authorization это уже вопрос дизайна сервера(сервиса)
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Client certificate auth - моментально 403 Forbidden
Включили бы Вы уже логи и давно бы разобрались

-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: Client certificate auth - моментально 403 Forbidden
А у этих двух машин полные доменные имена сильно отличаются?shadow7256 wrote: 17 Jul 2021 01:11 запускаю на одной машине - все ОК. Запускаю на другой - проваливаемся в catch и видим
-
- Уже с Приветом
- Posts: 9402
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
Так где эти логи включить то.
-
- Уже с Приветом
- Posts: 9402
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
У каких "двух" машин?Мальчик-Одуванчик wrote: 17 Jul 2021 02:20А у этих двух машин полные доменные имена сильно отличаются?shadow7256 wrote: 17 Jul 2021 01:11 запускаю на одной машине - все ОК. Запускаю на другой - проваливаемся в catch и видим
"Проблемный" клиент и сервер находятся в одной подсети, между ними нет никакого firewall. На клиенте запускаю tracert до сервера и выдает сразу первый же hop это hop сервера.
Повторюсь, как только я отключаю на сервере клиентскую аутентификацию, то все работает без проблем. Как только включаю ее, то начинается эта проблема. Вот код запуска сервера (self hosted API):
Code: Select all
var config = new HttpsSelfHostConfiguration(uri);
config.Formatters.XmlFormatter.UseXmlSerializer = true;
config.MaxReceivedMessageSize = int.MaxValue;
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
config.ClientCredentialType = HttpClientCredentialType.Certificate; // вот тут вкл/выкл требование клиентского сертификата
var server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();
-
- Уже с Приветом
- Posts: 9402
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
все абсолютно верно, но дело даже не в авторизации, сейчас хер с ней.kostik78 wrote: 17 Jul 2021 02:03 Про допуск любого сертификата подписанного банка это как сделать authorization part. Да все сертификаты определенного chain будут проходить authentication но будут ли все сертификаты данной цепочки проходить authorization это уже вопрос дизайна сервера(сервиса)
Судя по всему, раз сервер пускает запросы с одной машины и не пускает с другой, то наверное проблема где то на машине, с которой не пускает. А вот что за проблема непонятно.
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Client certificate auth - моментально 403 Forbidden
Это видели ? https://stackoverflow.com/questions/597 ... webrequestshadow7256 wrote: 17 Jul 2021 02:39Так где эти логи включить то.
Взглянул быстро вроде бы как раз логи включает
-
- Уже с Приветом
- Posts: 9402
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
ух ты, спасибо, подключил лог этот. В понедельник отдам индусу новую версию, пусть запускает с логами. Буду надеятся что покажет проблему.kostik78 wrote: 17 Jul 2021 02:52Это видели ? https://stackoverflow.com/questions/597 ... webrequestshadow7256 wrote: 17 Jul 2021 02:39Так где эти логи включить то.
Взглянул быстро вроде бы как раз логи включает
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53