Я пытался настроить тестовую среду, в которой у меня есть служба 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.
Или может быть какая-то конфигурация блокирует соединение?
Можно было бы подумать, что, поскольку сертификат создается на том же хосте, на котором запущено приложение и служба, все шифры будут поддерживаться сервером.