具有 802.1X + EAP-TTLS + EAP-MSCHAPv2 和客户端证书的 Windows Wi-Fi

具有 802.1X + EAP-TTLS + EAP-MSCHAPv2 和客户端证书的 Windows Wi-Fi

所以...我们有一个强制性要求,即想要加入我们的无线局域网的客户端必须出示由我们内部根 CA 颁发的有效机器证书。这样做是为了防止拥有有效用户名/密码组合的恶意用户加入无线局域网。毕竟,获得有效的用户名/密码组合比获得有效证书更容易。

在 Windows 8.x 之前,我们使用 EAP-TLS 作为外部身份验证协议来满足此要求,并使用内部身份验证协议根据我们的 AD 验证用户名/密码。

在 Windows 8.1 中,似乎不再支持 EAP-TLS(至少无法在 GUI 中配置。如果我弄错了,请提供一个链接说明如何配置)。因此,我开始尝试使用 EAP-TTLS 作为外部身份验证协议,使用 EAP-MSCHAPv2 作为内部身份验证协议。虽然这可行,但我无法在 TLS 握手阶段包含客户端证书。我无论如何也找不到告诉 Windows 这样做的方法。

当使用 EAP-TTLS 作为外部身份验证协议时,我是否可以正确地假设没有办法配置本机 Windows 8.1 802.1X 请求者来提供客户端证书?

RFC 5281明确指出在第 1 阶段支持客户端证书验证,所以我不太明白为什么微软会在 GUI 中省略一个选项来配置这一点。

答案1

Windows GUI 传统上将 EAP-TLS 身份验证称为“智能卡或其他证书”。所以也许这就是你要找的。

但是,你的问题的这一部分对我来说不太有意义:

在 Windows 8.x 之前,我们使用 EAP-TLS 作为外部身份验证协议来满足此要求,并使用内部身份验证协议根据我们的 AD 验证用户名/密码。

...因为据我所知,EAP-TLS 不提供“内部”身份验证协议。因此,我想知道您是否使用 EAP-TLS 作为唯一的 802.1X EAP 类型,然后您记得进行的用户名/密码身份验证不是 802.1X 的一部分,但可能是在您已经完全通过 802.1X 身份验证并具有网络连接后对 AD 域进行身份验证的一部分。

据我所知,只有 PEAP 和 TTLS 通过虚拟身份验证建立“外部”安全隧道,然后使用该隧道安全地传输“内部”身份验证事务。甚至 PEAP 和 TTLS 对于外部身份验证也只执行 TLS,但据我所知,仅使用它来验证身份验证器(AP 或 AAA 服务器)并设置加密隧道。我不记得曾经有一种方法可以在 PEAP 或 TTLS 外部为 TLS 身份验证指定客户端证书。

从技术上讲,PEAP 和 TTLS 都允许使用 EAP-TLS 作为内部身份验证机制,尽管许多早期的 TTLS 实现不允许使用 EAP;它们只允许 EAP 之前的 PPP 身份验证方法:PAP、CHAP、MS-CHAP、MS-CHAP-V2。原生 Windows 8.1 802.1X 请求者可能就是其中之一。同样,一些 PEAP 实现支持 EAP-MS-CHAP-V2 和 EAP-GTC 作为内部身份验证类型,并且可能不支持其他身份验证类型(例如 EAP-TLS)作为内部身份验证类型。但是,Microsoft 的原生 Windows 802.1X 请求者始终支持 EAP-TLS 作为 PEAP 的内部身份验证类型,他们只是传统上将其标记为“智能卡或其他证书”。

如果实施者在实施协议时跳过协议规范的可选部分,我一点也不惊讶。我读过的几乎每一份 RFC 都有我从未见过有人实施的部分。因此,如果微软的 Windows 原生 802.1X 请求者没有提供在 TTLS 的外部身份验证中提供客户端 TLS 证书的方法,那就不足为奇了。如果您通读 TTLS 规范,您会发现,当发生这种情况时,TTLS 最终会跳过内部身份验证,因此此时它基本上只是 EAP-TLS。微软可能认为,既然他们已经支持 EAP-TLS,为什么还要实施最终与 EAP-TLS 大致相同的 EAP-TTLS 模式?

相关内容