Работа с SEC_I_RENEGOTIATE и TLS1_ALERT_NO_RENEGOTIATION в SChannel - PullRequest
5 голосов
/ 21 октября 2008

Сейчас я работаю со SChannel для асинхронного (IOCP) сервера, и у меня все работает нормально, но у меня проблема с пересмотром. В частности, когда одноранговый узел A отправляет одноранговому узлу B запрос на повторное согласование, а одноранговый узел B отвечает предупреждением TLS1 NO RENEGOTIATION, как продолжается одноранговый узел A? Кажется, у меня неверный контекст в точке, где я получаю ответ SEC_I_NO_RENEGOTIATION, и это не позволяет мне продолжать использовать поток ...

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

Является ли запрос на пересмотр условий фактически отклоняемым? Или NO RENEGOTIATION alert - просто информационное сообщение об ошибке, которое теперь означает, что соединение бесполезно? Если так, то почему это комментируется как «предупреждение», а не «ошибка» ?? Нету; RFC TLS (5246) четко заявляет, что решение о том, сможем ли мы продолжить после оповещения об отсутствии повторного согласования, принадлежит коллеге, *

Обновлен Не имеет значения, если я отправлю предупреждение TLS, используя ApplyControlToken()<code> or if I send it using EncryptMessage() с SECQOP_WRAP_OOB_DATA ...

Ответы [ 2 ]

1 голос
/ 21 сентября 2009

Некоторое время назад был выпущен HOTFIX для оборудования на базе Intel AMT. По сути, корневой сертификат хранился как хэш SHA-1 вместо кэширования всего сертификата. SSPI передает все сертификаты за исключением корневого, ожидая, что корень будет иметь этот сертификат для проверки цепочки доверия. Когда полный корень не существовал, SSPI заставлял пересмотреть условия.

Исправление обновляет schannel в системах Win 2003 с установленным Intel AMT.

Проверьте этот KB: http://support.microsoft.com/kb/942841

0 голосов
/ 25 мая 2009

Может быть, это вам поможет: Код проекта: SSLSocket .

...