Запрос был прерван: не удалось создать безопасный канал SSL / TLS - PullRequest
2 голосов
/ 18 марта 2011

У нас есть веб-приложение .Net 2.0, которое использует стороннюю сборку для вызова веб-сервиса с нашей веб-страницы, работающей на сервере, на сторонний сайт.Звонок осуществляется через https.Этот код работал без проблем в течение многих лет, до 2 недель назад.Поставщик обновил свои сертификаты в течение последнего месяца.Однако ни один другой клиент не сообщил о проблеме, и некоторые наши машины работают без проблем.На некоторых наших серверах при совершении вызова мы получаем запрос был прерван: не удалось создать безопасный канал SSL / TLS.На других серверах проблем нет.Все серверы Windows 2003 работают под одной и той же кодовой базой.Мы включили трассировку .Net и зафиксировали трассировки на хорошем сервере и двух плохих.Мы убедились, что сертификат, возвращаемый на все серверы, одинаков.Трассировка .Net показывает один из вызовов InitializeSecurityContext, возвращающихся с возвращенным кодом = Illegal Message.Я проверил schannel.dll, secur32.dll и system.net.dll одинаковые версии на всех серверах.Я также подтвердил, что ЦС является доверенным (его Verisign).

На данный момент я ищу любые идеи по устранению неполадок.

Зарегистрируйте выдержки ниже.Первый от сервера, который получает ошибку.Обратите внимание, что в журналах для плохих серверов последовательность приема байтов всегда 204, 5, 2, ошибка.На хорошем сервере последовательность байтов всегда равна 204, 5, 1. Продолжение продолжается.

Плохой сервер

System.Net.Sockets Verbose: 0: [15784] ВыходСокет # 50912888 :: Send () -> 204 # 204

System.Net.Sockets Подробно: 0: [15784] Сокет # 50912888 :: Receive ()

System.Net.SocketsVerbose: 0: [15784] Данные из сокета # 50912888 :: Receive

System.Net.Sockets Verbose: 0: [15784] 00000000: 15 03 00 00 02: .....

System.Net.Sockets Verbose: 0: [15784] Выход из сокета # 50912888 :: Receive () -> 5 # 5

System.Net.Sockets Verbose: 0: [15784] Сокет # 50912888:: Receive ()

System.Net.Sockets Verbose: 0: [15784] Данные из сокета # 50912888 :: Receive

System.Net.Sockets Verbose: 0: [15784] 00000005:02 28:. (

System.Net.Sockets Verbose: 0: [15784] Выход из сокета # 50912888 :: Receive () -> 2 # 2

Информация о System.Net: 0:[15784] InitializeSecurityContext (credential = System.Net.SafeFreeCredential_SECURITY, context = 10709bc8: 189fc88, targetName = transform.documentmailbox.net, inFlags = ReplayDetect, SequenceDetect, Конфиденциальность, AllocateMemory, InitManualCredValidation)

Информация о System.Net: исходная информация об уровне безопасности (15784)= 2, длина Out-Buffer = 0, возвращенный код = IllegalMessage).

System.Net.Sockets Verbose: 0: [15784] Сокет # 50912888 :: Dispose ()

Система.Чистая ошибка: 0: [15784] Исключение в HttpWebRequest # 44205226 :: - Запрос был прерван: Не удалось создать безопасный канал SSL / TLS.

Ошибка System.Net: 0: [15784] Исключение вHttpWebRequest # 44205226 :: EndGetRequestStream - Запрос был прерван: Не удалось создать безопасный канал SSL / TLS.

Хороший сервер:

System.Net.Sockets Verbose: 0: [0244] Выход из сокета # 56654665 :: Send () -> 204 # 204

System.Net.Sockets Verbose: 0: [0244] Сокет # 56654665 :: Receive ()

System.Net.Sockets Verbose: 0: [0244] Данные дляm Socket # 56654665 :: Receive

System.Net.Sockets Verbose: 0: [0244] 00000000: 14 03 00 00 01: .....

System.Net.Sockets Verbose: 0: [0244] Выход из сокета # 56654665 :: Receive () -> 5 # 5

System.Net.Sockets Verbose: 0: [0244] Сокет # 56654665 :: Receive ()

System.Net.Sockets Verbose: 0: [0244] Данные из сокета # 56654665 :: Receive

System.Net.Sockets Verbose: 0: [0244] 00000005: 01:.

System.Net.Sockets Verbose: 0: [0244] Выход из сокета # 56654665 :: Receive () -> 1# 1

Информация о System.Net: 0: [0244] InitializeSecurityContext (credential = System.Net.SafeFreeCredential_SECURITY, context = b2310: 174420, targetName = transform.documentmailbox.net, inFlags = ReplayDetect, ConfortIDIttect, SequenceDetectAllocateMemory, InitManualCredValidation)

Информация о System.Net: 0: [0244] InitializeSecurityContext (количество входящих буферов = 2, длина внешнего буфера = 0, возвращаемый код = ContinueNeeded).

Система.Net.Sockets Verbose: 0: [0244] Socket # 56654665 :: Receive ()

System.Net.Sockets Verbose: 0: [0244] Данные из сокета # 56654665 :: Receive

System.Net.Sockets Verbose: 0: [0244] 00000000: 16 03 00 00 38: .... 8

System.Net.Sockets Verbose: 0: [0244] Выход из сокета # 56654665 :: Receive() -> 5 # 5

System.Net.Sockets Verbose: 0: [0244] Сокет # 56654665 :: Receive ()

System.Net.Sockets Verbose: 0: [0244] Данные из сокета # 56654665 :: Receive

System.Net.Sockets Verbose: 0: [0244]00000005: C0 44 EB FF 6A 88 AD DA-2C 5A 74 99 AD 11 CE 16: .D..j ..., Zt .....

System.Net.Sockets Подробно: 0:[0244] 00000015: 4B 10 29 D7 DD 4E A0 83-E9 DE EB BD 37 2F 81 FB: K.) .. N ...... 7 /..

System.Net.SocketsПодробно: 0: [0244] 00000025: D4 9C 99 6C FB A0 CA 6B-1A 4E 7A CA B9 39 1B 91: ... l ... k.Nz..9 ..

Система.Net.Sockets Verbose: 0: [0244] 00000035: 7B 26 B1 01 8C FD C1 08-: {& ......

System.Net.Sockets Verbose: 0: [0244] Выход из гнезда# 56654665 :: Receive () -> 56 # 56

Информация о System.Net: 0: [0244] InitializeSecurityContext (credential = System.Net.SafeFreeCredential_SECURITY, context = b2310: 174420, targetName = transform.documentmailbox.net, inFlags = ReplayDetect, SequenceDetect, Конфиденциальность, AllocateMemory, InitManualCredValidation)

Информация о System.Netrmation: 0: [0244] InitializeSecurityContext (количество входящих буферов = 2, длина внешнего буфера = 0, возвращенный код = OK).

1 Ответ

0 голосов
/ 18 марта 2011

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

Исходя из того, что некоторые серверы могут получить доступ к этому, а другие нет, я бы поспорил, что проблема все еще остается вопросом доверия к сертификату.

Сертификат, возможно, был выдан Verisign, и его вполне можно доверять на большинстве машин, но это означает, что НЕ означает, что ему доверяют на всех машинах.

У нас были подобные проблемы около 6 месяцев назад, когда мы обновляли сертификаты на нашем основном веб-сервере. Мы приняли несколько звонков от клиентов, и в каждом случае было решено, чтобы они заходили в Обновления Windows и искали обновление корневых сертификатов ИЛИ Google для получения самого последнего обновления и загружали его из Microsoft. Очевидно, по какой-то причине обновления корневого сертификата не всегда применяются в обычном процессе обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...