. NET Core - HTTPClient - ключ dh слишком мал в Ubuntu 20.04 - PullRequest
0 голосов
/ 30 апреля 2020

Я хотел бы спросить, есть ли способ обойти проверки безопасности Ubuntu, чтобы я мог получить сайт с небольшим ключом в моем. NET Приложение Core Client? Я получаю error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small исключение.

Проблема в том, что в Ubuntu 20.04 openSSL имеет уровень безопасности, установленный на 2, и (в настоящее время, надеюсь, кто-то придет с ответом на мой вопрос на вопрос Ubuntu ) Я не знаю, как установить его на более низкое значение.

Та же ошибка возникает при использовании curl, если не указан параметр --ciphers 'DEFAULT:!DH', поэтому я предполагаю причину root проблема в самой операционной системе.

Я не контролирую сервер веб-сайта, поэтому изменение его настроек безопасности - нет go.

То, что я пробовал так далеко от C# side:

serviceCollection.AddHttpClient<IInterface, IImplementation>()
                             .ConfigureHttpMessageHandlerBuilder(messageHandlerBuilder =>
                             {
                                 messageHandlerBuilder.PrimaryHandler = new HttpClientHandler
                                 {
                                     ServerCertificateCustomValidationCallback = (m, c, ch, e) => true
                                 };
                             });

и

using var httpClient = new HttpClient();
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

var websiteContent = await httpClient.GetStreamAsync(url);

Безопасность в данном случае не является большой проблемой, поэтому я согласен с использованием любого грязного хака здесь.

Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 02 мая 2020

Благодаря ответу , полученному на Ask Ubuntu Мне удалось решить проблему:

  • копированием openssl.cnf файла
  • Добавление openssl_conf = default_conf в верх скопированного файла
  • Добавление в конце:
    [ default_conf ]

    ssl_conf = ssl_sect

    [ssl_sect]

    system_default = ssl_default_sect

    [ssl_default_sect]
    MinProtocol = TLSv1.2
    CipherString = DEFAULT:@SECLEVEL=1

  • Запуск проекта с OPENSSL_CONF переменной среды, установленной в путь к измененному файлу конфигурации
...