在SChannel中处理SEC_I_RENEGOTIATE和TLS1_ALERT_NO_RENEGOTIATION

时间:2008-10-21 18:55:51

标签: ssl schannel

我现在正在使用SChannel为基于异步(IOCP)的服务器而且我已经让大多数工作正常但我遇到了重新协商的问题。具体来说,当对等体A向对等体B发送重新协商请求并且对等体B用TLS1 NO RENEGOTIATION警报响应时,对等体A如何继续?我收到SEC_I_NO_RENEGOTIATION响应时似乎有无效的上下文,这使我无法继续使用流...

已更新我已经完成了更多测试,但它似乎不是无效的上下文,但我会在下次调用加密时获得SEC_E_ENCRYPT_FAILURE ...

重新谈判的请求实际上是否可以拒绝?或NO RENEGOTIATION仅提醒信息错误消息现在意味着连接无用?如果是这样,为什么它被评论为“警告”而不是“错误”?不; TLS RFC(5246)明确规定由同行决定我们是否可以在没有重新协商警报后继续......

已更新如果我使用ApplyControlToken() or if I send it using EncryptMessage() with SECQOP_WRAP_OOB_DATA发送TLS提醒,则没有任何区别......

2 个答案:

答案 0 :(得分:1)

对于基于Intel AMT的硬件,有一段时间发布了HOTFIX。实质上,根证书存储为SHA-1哈希,而不是缓存整个证书。 SSPI传递除root之外的所有证书,期望root拥有此证书以进行信任链验证。当完全根不存在时,SSPI正在强制重新协商。

此修补程序在安装了Intel AMT的Win 2003系统上更新schannel。

查看此KB:http://support.microsoft.com/kb/942841

答案 1 :(得分:0)

这可能会对您有所帮助:Code Project: SSLSocket