Подключение от HttpClient к API за Azure FrontDoor с использованием TLS 1.2 - PullRequest
1 голос
/ 20 февраля 2020

Azure Передняя дверь настроена с минимальным TLS 1.2. Внутренняя служба приложений Azure также настроена на использование минимального TLS 1.2.

При запуске консольного приложения. Net Framework 4.7.1 со следующим кодом на Windows Server 2012 R2:

class Program
    {
        static async Task Main(string[] args)
        {
             ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
             var client = new HttpClient();

            try
            {

                var OK = await client.GetAsync("https://foo-appservice.azurewebsites.net/"); // App service.
                var NotOK = await client.GetAsync("https://foo.myfoo.io/"); // Front door.

            }
            catch (Exception e)
            {
               Console.WriteLine(e);
            }

            Console.ReadKey();
        }
    }

При втором вызове я получаю следующее исключение.

An error occurred while sending the request.
The underlying connection was closed: An unexpected error occurred on a send.
Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.

Работа с curl с того же сервера работает, однако:

curl https://foo.myfoo.io/ -i --tlsv1.2 --tls-max 1.2

То же самое. * Код 1023 * отлично работает с моего другого windows 10 ноутбука.

В чем может быть причина сбоя вызова на сервере windows?

Редактировать:

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

1 Ответ

0 голосов
/ 26 марта 2020

Оказывается, "кто-то" отключил множество наборов шифров на сервере Windows.

Я использовал wireshark, чтобы посмотреть на рукопожатие TLS, и заметил, что наборы шифров, перечисленные в Client Hello, не соответствуют серверам.

Так что для любого, кто борется с ошибками TLS, может быть полезно взглянуть на рукопожатие TLS в Wireshark!

...