http client и гост
От: BlackEric http://black-eric.lj.ru
Дата: 28.11.23 13:47
Оценка:
Кто-то учил дотнетовский http client работать с гост подключением?

Например https://testgost2012.cryptopro.ru/
https://github.com/BlackEric001
Re: http client и гост
От: 4058  
Дата: 28.11.23 17:14
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Кто-то учил дотнетовский http client работать с гост подключением?


BE>Например https://testgost2012.cryptopro.ru/


Код:

using (System.Net.Http.HttpClient client = new System.Net.Http.HttpClient())
{
    Console.WriteLine(System.Text.Encoding.GetEncoding(1251).GetString(client.GetByteArrayAsync("https://testgost2012.cryptopro.ru/").Result));
}


Результат:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
        <meta http-equiv="Content-Language" content="ru">

<title>Тестовая страница для установления защищенного соединения с сервером с односторонней аутентификацией</title>

<body>
<h3>Защищенное соединение с сервером, с использованием односторонней аутентификации - установлено.</h3>
Алгоритм открытого ключа сертификата сервера: 
<UL>
<li> ГОСТ Р 34.10-2012 512 бит - если браузер клиента поддерживает ГОСТ TLS  
<li> RSA 2048 бит - если браузер клиента не поддерживает ГОСТ TLS  
</UL>
</body>
</html>

Но это .NET FW 4.5+ (не Core) и Windows 10, а у Вас какая ОС и версия .NET?
Re[2]: http client и гост
От: BlackEric http://black-eric.lj.ru
Дата: 28.11.23 19:43
Оценка:
Здравствуйте, 4058, Вы писали:

4>Но это .NET FW 4.5+ (не Core) и Windows 10, а у Вас какая ОС и версия .NET?


Она открывается по двум протоколам: RSA и ГОСТ.
Проверяется это через Chromium GOST с установленным КриптоПро.
У меня 5 дотнет под виндой. И не работает. Не знаю почему. Буду пробовать на фреймворке.
https://github.com/BlackEric001
Re[3]: http client и гост
От: karbofos42 Россия  
Дата: 29.11.23 08:28
Оценка: 6 (1)
Здравствуйте, BlackEric, Вы писали:

BE>У меня 5 дотнет под виндой. И не работает. Не знаю почему. Буду пробовать на фреймворке.


Пробуй отключить валидацию серверного сертификата:
HttpClientHandler handler = new()
{
    ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator
};

using (var client = new HttpClient(handler))
{
  // запрос страницы
}

Если так заработает, значит нужно корневой сертификат CryptoPro Root CA установить.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.