Назад | Перейти на главную страницу

Ошибки Schannel 36874 в Windows Server 2016

Я весь день смотрел на эту ошибку и сейчас действительно ломаю голову. У нас есть Windows Server 2016 Std, на котором работает веб-сервис .NET. Это, в свою очередь, подключается к нашему серверу базы данных, той же ОС, в том же состоянии, то есть за одним брандмауэром. Прежде всего я должен заявить, что на обоих серверах включен ТОЛЬКО TLS1.2, а запуск теста Qualys Labs подтверждает, что SSL3 не включен.

Похоже, что происходит то, что запросы проходят и сталкиваются с проблемами ssl / tls, как показано ниже, которые я извлек из файлов журнала приложения:

Запрос был прерван: не удалось создать безопасный канал SSL / TLS.

Затем, через 59-61 секунду, мы получаем ошибку sql:

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

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

Приложение .net теперь использует правильное имя хоста для сервера db, поскольку ранее оно использовало имя, которого не существовало, но было в файле локальных хостов, но это не решило проблемы (я подумал, что, возможно, имя хоста не соответствует тому, что в нашем сертификате с подстановочным знаком может вызвать проблемы). Это приложение было написано некоторыми разработчиками CRM, но, к сожалению, они отказываются сотрудничать.

Журнал событий Windows (система) полон ошибок Schannel 36874, которые, похоже, коррелируют с ошибками, упомянутыми выше:

Запрос на соединение SSL 3.0 был получен от удаленного клиентского приложения, но ни один из наборов шифров, поддерживаемых клиентским приложением, не поддерживается сервером. Запрос на подключение TLS не удался.

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

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

Любая помощь будет оценена. Думаю, мне действительно нужно выяснить, кто / что за «удаленный клиент» находится в журналах событий, есть ли у кого-нибудь указатели?

Большое спасибо

Похоже, это проблема с серверными наборами CIPHER, которые клиент запрашивает перед рукопожатием. Не могли бы вы предоставить нам дополнительную информацию о том, как клиентская сторона устанавливает соединение? Если у вас есть доступ к клиенту SSL командной строки, вы можете инициировать рукопожатие самостоятельно и попытаться устранить ошибку.

Я бы посоветовал просто убедиться, что разработчик приложений стандартизирует рукопожатие, чтобы использовать TLS 1.2 для наиболее совместимых настроек и TLS 1.3, если вы можете управлять серверной частью набора шифров.