Рейтинг:0

Приветствие клиента TLS 1.2, приводящее к сбросу TCP

флаг ph

Я пытался настроить тестовую среду, в которой у меня есть служба Windows, на которой размещается IDP. IDP по устаревшим причинам доступен с использованием как HTTP, так и HTTPS. На том же хосте я также развернул тестовую программу, которая должна вызывать службу и тестировать IDP. Хост работает под управлением Windows Server 2016 Standard.

Когда я вызываю IDP с помощью HTTPS, я получаю сброс TCP в ответ на приветствие клиента:

    Тип контента: Рукопожатие (22)
    Версия: TLS 1.2 (0x0303)
    Длина: 156
    Протокол рукопожатия: Client Hello
        Тип рукопожатия: Client Hello (1)
        Длина: 152
        Версия: TLS 1.2 (0x0303)
        Случайно: 61404bb1f286d56caf2a6f1eb9d47f62ea8e7c8dd7764e6654d56ab4f90fef7a
        Длина идентификатора сеанса: 0
        Наборы шифров Длина: 56
        Шифровые люксы (28 люксов)
            Набор шифров: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
            Набор шифров: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
            Набор шифров: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)
            Набор шифров: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
            Набор шифров: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f)
            Набор шифров: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
            Набор шифров: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)
            Набор шифров: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
            Набор шифров: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)
            Набор шифров: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
            Набор шифров: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
            Набор шифров: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
            Набор шифров: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
            Набор шифров: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
            Набор шифров: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
            Набор шифров: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
            Набор шифров: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)
            Набор шифров: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
            Набор шифров: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)
            Набор шифров: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)
            Набор шифров: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
            Набор шифров: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
            Набор шифров: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
            Набор шифров: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a)
            Набор шифров: TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 (0x0040)
            Набор шифров: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038)
            Набор шифров: TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x0032)
            Набор шифров: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)
        Методы сжатия Длина: 1
        Методы сжатия (1 метод)
            Метод сжатия: ноль (0)
        Длина удлинителей: 55
        Расширение: support_groups (len=8)
            Тип: поддерживаемые_группы (10)
            Длина: 8
            Длина списка поддерживаемых групп: 6
            Поддерживаемые группы (3 группы)
        Расширение: ec_point_formats (len=2)
            Тип: ec_point_formats (11)
            Длина: 2
            Форматы баллов EC Длина: 1
            Форматы точек эллиптических кривых (1)
        Расширение: signal_algorithms (len=20)
            Тип: signal_algorithms (13)
            Длина: 20
            Алгоритмы хеширования подписи Длина: 18
            Алгоритмы хеширования подписи (9 алгоритмов)
        Расширение: session_ticket (len=0)
            Тип: session_ticket (35)
            Длина: 0
            Данные (0 байт)
        Расширение: extended_master_secret (len=0)
            Тип: extended_master_secret (23)
            Длина: 0
        Расширение: reegotiation_info (len=1)
            Тип: renegotiation_info (65281)
            Длина: 1
            Расширение информации о повторном согласовании

Я пробовал несколько разных способов создания сертификата. В этом журнале использовался сертификат, сгенерированный с помощью Power Shell на том же хосте, на котором выполнялся тест:

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "host.com" -FriendlyName "host.com" -NotAfter (Get-Date).AddYears(10)

Я также пытался использовать сертификат, установленный вместе с нашим приложением, но получил тот же результат.

При выполнении одного и того же теста на двух хостах Windows 10, где сертификаты были сгенерированы одинаково. Один из них также генерирует ответ TCP Reset на Client Hello, тогда как другой работает по назначению, и я могу пройти аутентификацию с помощью IDP.

Вызов IDP с использованием HTTP всегда работает.

Может ли эта проблема быть связана с тем, что я использую петлевой интерфейс при установке DNS-имени на «host.com»? В таком случае, каким должен быть DNS? Использование «localhost» и «127.0.0.1» приводит к сбросу TCP. Или может быть какая-то конфигурация блокирует соединение? Можно было бы подумать, что, поскольку сертификат создается на том же хосте, на котором запущено приложение и служба, все шифры будут поддерживаться сервером.

Ответить или комментировать

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