верно, и поэтому мы видим в пакетах, кто сервер просит клиента переключится на HTTP 1.1 и клиент переключается на HTTP 1.1mitnlag wrote: ↑16 Jul 2021 15:41HTTP/2 standard has no implementation for client certificate authentication.shadow7256 wrote: ↑16 Jul 2021 15:35 Еще больше пронюхал.. вижу запрос от сервера, где он просит клиента предоставить клиентский сертификат.
Client certificate auth - моментально 403 Forbidden
-
- Уже с Приветом
- Posts: 9383
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
-
- Уже с Приветом
- Posts: 9383
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
-
- Уже с Приветом
- Posts: 9383
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
я сам сильно зае..ся решать эту проблема, потому как в этом гребаном банке никто ни за что толком не отвечает, но хотят иметь 100% bullet proof решение.kostik78 wrote: ↑16 Jul 2021 16:45 Чего то Вы запутали совсем. Насколько я понял у Вас была проблема с С# клиентом а теперь Вы говорите про браузер. В браузере окошко выбора сертификатов может не появляется по причине security settings на самом браузере. В C# скорее всего другая проблема и я давно посоветовал Вам SSL логи включить.
Я сделаю простое клиентское приложение на С# и посмотрю что мне сервер выдаст.
С браузером согласен, что это скорее всего настройки браузера.
-
- Уже с Приветом
- Posts: 3170
- Joined: 17 May 2007 14:07
Re: Client certificate auth - моментально 403 Forbidden
С клиентом обычно все просто: даёшь клиентский сертификат и приватный ключ. Если обе стороны знают сертификаты то все должно работать. Правда я тут порылся в инете и выглядит так, что в винде какой то дополнительный уровень секьюрити накрутили. Нашёл что народ утверждает что инсталлированный self-signed cert в store может быть виндой помещённый в black list и не давать его использовать. Насколько это правда не знаю - с виндой не работал давно (по моему последняя была Windows XP)shadow7256 wrote: ↑16 Jul 2021 17:43я сам сильно зае..ся решать эту проблема, потому как в этом гребаном банке никто ни за что толком не отвечает, но хотят иметь 100% bullet proof решение.kostik78 wrote: ↑16 Jul 2021 16:45 Чего то Вы запутали совсем. Насколько я понял у Вас была проблема с С# клиентом а теперь Вы говорите про браузер. В браузере окошко выбора сертификатов может не появляется по причине security settings на самом браузере. В C# скорее всего другая проблема и я давно посоветовал Вам SSL логи включить.
Я сделаю простое клиентское приложение на С# и посмотрю что мне сервер выдаст.
С браузером согласен, что это скорее всего настройки браузера.
-
- Уже с Приветом
- Posts: 9383
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
у нормальных людей да, все работает. Но только не в этом гребаном банке.
с self signed сертификатами да, могут быть проблемы. Но мы используем нормальный сертификат, правда подписанный самим банком. У них политика такая, все сертификаты выпускают только они сами.kostik78 wrote: ↑16 Jul 2021 18:08 Правда я тут порылся в инете и выглядит так, что в винде какой то дополнительный уровень секьюрити накрутили. Нашёл что народ утверждает что инсталлированный self-signed cert в store может быть виндой помещённый в black list и не давать его использовать. Насколько это правда не знаю - с виндой не работал давно (по моему последняя была Windows XP)
-
- Уже с Приветом
- Posts: 13642
- Joined: 16 Jan 2001 10:01
Re: Client certificate auth - моментально 403 Forbidden
Когда всё это заработает, решится кто-нибудь подставить неправильный сертификат, чтобы убедиться что система защищена от несанкционированного доступа?
-
- Уже с Приветом
- Posts: 3170
- Joined: 17 May 2007 14:07
Re: Client certificate auth - моментально 403 Forbidden
Не понятен Ваш скептицизм. Я построил не одну систему где сервисы (как шас принято называть микросервисами) использовали mutual cert auth и авторизация привелегий определялась самим конечным сертификатом через extension. Данные системы работают и довольно безопасны если сделаны верно
-
- Уже с Приветом
- Posts: 1828
- 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: 9383
- 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: 13642
- Joined: 16 Jan 2001 10:01
Re: Client certificate auth - моментально 403 Forbidden
То что системы работают - понятно.kostik78 wrote: ↑16 Jul 2021 23:02Не понятен Ваш скептицизм. Я построил не одну систему где сервисы (как шас принято называть микросервисами) использовали mutual cert auth и авторизация привелегий определялась самим конечным сертификатом через extension. Данные системы работают и довольно безопасны если сделаны верно
А как Вы определяете что они довольно безопасны?
По поводу моего скепцитизма.
Давайте посмотрим правде в глаза:
Имеется инженер, достаточно грамотный вроде бы.
Он пытается решить элементарную проблему: почему система не пускает того, кто имеет право ей пользоваться.
Для этого он нюхает пакеты, взывает к помощи клуба...
И это не потому что он тупой. Система не предоставляет адекватных средств диагностики.
Имеем классический случай слишком сложного замка: рано или поздно дверь подопрут табуреткой.
К тому же упоминание "нормальных, не самоподписанных сертификатов" делает меня думать что в системе уже проделана дырка, и любой сертификат подписанный CA этого банка предоставит доступ к системе.
-
- Уже с Приветом
- Posts: 13642
- Joined: 16 Jan 2001 10:01
Re: Client certificate auth - моментально 403 Forbidden
Случай из жизни:
Подключались мы к такому сервису. Сервис был в процессе разработки.
Как обычно, тестировали без всяких изотопов, а mutual authentication нашлепнули за неделю до релиза.
У нас заработало, у другого клиента - нет.
Главный инженер проекта покумекал немного, и принял соломоново решение:
Поскольку server authentication работает - система достаточно безопасна. Клиентов аутентифицировать не будем.
Подключались мы к такому сервису. Сервис был в процессе разработки.
Как обычно, тестировали без всяких изотопов, а mutual authentication нашлепнули за неделю до релиза.
У нас заработало, у другого клиента - нет.
Главный инженер проекта покумекал немного, и принял соломоново решение:
Поскольку server authentication работает - система достаточно безопасна. Клиентов аутентифицировать не будем.
-
- Уже с Приветом
- Posts: 3170
- 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. Данные системы работают и довольно безопасны если сделаны верно
А как Вы определяете что они довольно безопасны?
Определяю не я а время (то бишь хакеры) и penetration testing который требуется каждый год для прохождения разных аудитов.
Про допуск любого сертификата подписанного банка это как сделать authorization part. Да все сертификаты определенного chain будут проходить authentication но будут ли все сертификаты данной цепочки проходить authorization это уже вопрос дизайна сервера(сервиса)
-
- Уже с Приветом
- Posts: 3170
- Joined: 17 May 2007 14:07
Re: Client certificate auth - моментально 403 Forbidden
Включили бы Вы уже логи и давно бы разобралисьshadow7256 wrote: ↑17 Jul 2021 01:11
запускаю на одной машине - все ОК. Запускаю на другой - проваливаемся в catch и видим
Exception while calling: {url}. Error: One or more errors occurred while sending the request
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Client certificate auth - моментально 403 Forbidden
А у этих двух машин полные доменные имена сильно отличаются?shadow7256 wrote: ↑17 Jul 2021 01:11 запускаю на одной машине - все ОК. Запускаю на другой - проваливаемся в catch и видим
-
- Уже с Приветом
- Posts: 9383
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
Так где эти логи включить то.
-
- Уже с Приветом
- Posts: 9383
- 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: 9383
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
все абсолютно верно, но дело даже не в авторизации, сейчас хер с ней.
Судя по всему, раз сервер пускает запросы с одной машины и не пускает с другой, то наверное проблема где то на машине, с которой не пускает. А вот что за проблема непонятно.
-
- Уже с Приветом
- Posts: 3170
- Joined: 17 May 2007 14:07
Re: Client certificate auth - моментально 403 Forbidden
Это видели ? https://stackoverflow.com/questions/597 ... webrequest
Взглянул быстро вроде бы как раз логи включает
-
- Уже с Приветом
- Posts: 9383
- 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 ... webrequest
Взглянул быстро вроде бы как раз логи включает
-
- Уже с Приветом
- Posts: 15475
- Joined: 27 Sep 2007 22:53
Re: Client certificate auth - моментально 403 Forbidden
У проблемного и беспроблемного клиентов.
-
- Уже с Приветом
- Posts: 9383
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
В понедельник узнаю.
-
- Уже с Приветом
- Posts: 13642
- Joined: 16 Jan 2001 10:01
Re: Client certificate auth - моментально 403 Forbidden
Что-то мне подсказывает что авторизация там сделана через добавление/удаление сертификатов в trust store.
-
- Уже с Приветом
- Posts: 2399
- Joined: 16 Jul 2004 00:32
- Location: NY, NY
Re: Client certificate auth - моментально 403 Forbidden
ИМХО, вам надо бы разобраться что именно верифицируется сервером в отношении клиента на основе предоставленного сертификата.
Обычно HTTPS сервера не проверяют host name клиента, но технически это возможно.
Как известно, если этого не делать, что MITM аттака вполне осуществима.
Обычно HTTPS сервера не проверяют host name клиента, но технически это возможно.
Как известно, если этого не делать, что MITM аттака вполне осуществима.
-
- Уже с Приветом
- Posts: 9383
- Joined: 18 Mar 2004 15:11
- Location: New York -> FL
Re: Client certificate auth - моментально 403 Forbidden
Мне сейчас важно понять почему один и тот же сервер работает по разному с двумя разными клиентами. Сертификат везде стоит один и тот же, и на сервере и на клиентах. Сертификат валидный и не просроченный.Oleg-NY wrote: ↑17 Jul 2021 04:27 ИМХО, вам надо бы разобраться что именно верифицируется сервером в отношении клиента на основе предоставленного сертификата.
Обычно HTTPS сервера не проверяют host name клиента, но технически это возможно.
Как известно, если этого не делать, что MITM аттака вполне осуществима.
В одном случае сервер возвращает ответ в другом случае возвращает 403. В понедельник включу трейсинг и посмотрю что происходит.
-
- Уже с Приветом
- Posts: 3170
- Joined: 17 May 2007 14:07
Re: Client certificate auth - моментально 403 Forbidden
При mutual auth когда сертификаты сверяются с обоих сторон MITM не возможен в принципе ибо для этого потребуется знать приватные ключи и сервера и клиентаOleg-NY wrote: ↑17 Jul 2021 04:27 ИМХО, вам надо бы разобраться что именно верифицируется сервером в отношении клиента на основе предоставленного сертификата.
Обычно HTTPS сервера не проверяют host name клиента, но технически это возможно.
Как известно, если этого не делать, что MITM аттака вполне осуществима.