问题描述
由 section 4.2.1 of RFC 6347 中描述的 HelloverifyRequest
发起的 cookie 交换对于 DTLS 中的 DoS 保护至关重要。除非我忽略了一些东西,否则 WolfSSL 文档并没有真正描述如何通过其 DTLS 实现启用此 cookie 交换。
我能找到的最接近的是函数 wolfSSL_send_hrr_cookie
,手册中提到:
在服务器端调用这个函数来表明一个 HelloRetryRequest 消息必须包含一个 Cookie。 Cookie 包含一个 当前成绩单的散列,以便另一个服务器进程可以 处理 ClientHello 作为回复。该秘密在生成 对 Cookie 数据进行完整性检查。
据我所知,HelloRetryRequest
(比较 HelloverifyRequest
)是 TLS 1.3 术语。 DTLS 1.3 尚未最终确定。如何在 WolfSSL 中启用和控制 DTLS 1.0/1.2 cookie 交换?
解决方法
默认启用 DTLS Hello Cookie。 wolfSSL 服务器代码使用文件 src/wolfio.c 中的回调函数 EmbedGenerateCookie()
根据 RFC 6347 §4.2.1 中的建议生成 cookie。
TLSv1.3 的 hrr_cookie 是其他无关的。