网络访问的可扩展身份验证协议 (EAP)

适用于:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012、Windows 11、Windows 10、Windows 8.1

可扩展身份验证协议 (EAP) 是一种身份验证框架,允许对安全网络访问技术使用不同的身份验证方法。 这些技术的示例包括使用 IEEE 802.1X 的无线访问、使用 IEEE 802.1X 的有线访问,以及诸如虚拟专用网络 (VPN) 的点到点协议 (PPP) 连接。 EAP 不是类似于 MS-CHAP v2 的特定身份验证方法,而是一个框架,使网络供应商能够在访问客户端和身份验证服务器上开发和安装新的身份验证方法(称为 EAP 方法)。 EAP 框架最初由 RFC 3748 定义,并由其他各种 RFC 和标准扩展。

身份验证方法

在隧道 EAP 方法中使用的 EAP 身份验证方法通常称为“内部方法”或“EAP 类型”。 设置为内部方法的方法的配置设置与该方法用作外部方法时的配置设置相同。 本文包含 EAP 中下列身份验证方法特定的配置信息。

EAP-传输层安全性 (EAP-TLS)基于标准的 EAP 方法,它使用 TLS 和证书进行相互身份验证。 在 Windows 中显示为“智能卡或其他证书(EAP-TLS)”。 EAP-TLS 可部署为另一种 EAP 方法的内部方法,也可部署为独立的 EAP 方法。

提示

使用 EAP-TLS(基于证书)的 EAP 方法通常提供最高级别的安全性。 例如对于 WPA3-Enterprise 192 位模式,EAP-TLS 是唯一允许的 EAP 方法。

EAP-Microsoft 质询握手身份验证协议版本 2 (EAP-MSCHAP v2)Microsoft 定义的 EAP 方法,该方法封装 MSCHAP v2 身份验证协议,并使用用户名和密码进行身份验证。 在 Windows 中显示为“安全密码 (EAP-MSCHAP v2)”。 EAP-MSCHAPv2 可用作 VPN 的独立方法,但对于有线/无线网络则只能用作内部方法。

警告

基于 MSCHAPv2 的连接受到与 NTLMv1 类似的攻击。 Windows 11 企业版 22H2(内部版本 22621)启用 Windows Defender Credential Guard,这可能会导致基于 MSCHAPv2 的连接出现问题。

受保护的 EAP (PEAP)Microsoft 定义的 EAP 方法,用于在 TLS 隧道中封装 EAP。 TLS 隧道保证内部 EAP 方法的安全,否则该方法可能不受保护。 Windows 支持 EAP-TLS 和 EAP-MSCHAP v2 作为内部方法。

EAP 隧道传输层安全性 (EAP-TTLS)RFC 5281 中对此进行了介绍,用于封装使用另一个内部身份验证机制执行相互身份验证的 TLS 会话。 此内部方法可以是 EAP 协议(如 EAP-MSCHAP v2),也可以是非 EAP 协议(如密码验证协议 (PAP))。 在 Windows Server 2012 中,只支持在客户端包含 EAP-TTLS(在 Windows 8 中)。 NPS 目前不支持 EAP-TTLS。 有了此客户端支持,可与支持 EAP-TTLS 的常见部署 RADIUS 服务器进行互操作。

EAP-用户识别模块 (EAP-SIM)、EAP-身份验证和密钥协议 (EAP-AKA) 及 EAP-AKA Prime (EAP-AKA'):各种 RFC 对此进行了介绍,支持使用 SIM 卡进行身份验证,在客户从移动网络运营商处购买无线宽带服务计划时实现。 在该计划中,客户通常会收到一个针对 SIM 身份验证进行了预配置的无线配置文件。

隧道 EAP (TEAP)RFC 7170 对此进行了介绍,这是隧道 EAP 方法,用于建立安全的 TLS 隧道并在该隧道内执行其他 EAP 方法。 支持 EAP 链接 - 在一个身份验证会话中对计算机和用户进行身份验证。 在 Windows Server 2022 中,只支持在客户端包含 TEAP(Windows 10 版本 2004 内部版本 19041)。 NPS 目前不支持 TEAP。 有了此客户端支持,可与支持 TEAP 的常见部署 RADIUS 服务器进行互操作。 Windows 支持 EAP-TLS 和 EAP-MSCHAP v2 作为内部方法。

下表列出了一些常见的 EAP 方法及其 IANA 分配的方法类型编号

EAP 方法 IANA 分配的类型编号 本机 Windows 支持
MD5-Challenge (EAP-MD5) 4
一次性密码 (EAP-OTP) 5
通用令牌卡 (EAP-GTC) 6
EAP-TLS 13
EAP-SIM 18
EAP-TTLS 21
EAP-AKA 23
PEAP 25
EAP-MSCHAP v2 26
受保护的一次性密码 (EAP-POTP) 32
EAP-FAST 43
预共享密钥 (EAP-PSK) 47
EAP-IKEv2 49
EAP-AKA' 50
EAP-EKE 53
TEAP 55
EAP-NOOB 56

配置 EAP 属性

你可以通过下列方式访问经过 802.1X 验证的有线和无线访问的 EAP 属性:

  • 在组策略中配置有线网络 (IEEE 802.3) 策略和无线网络 (IEEE 802.11) 策略扩展。
    • “计算机配置”>“策略”>“Windows 设置”>“安全设置”
  • 使用移动设备管理 (MDM) 软件,例如 Intune(Wi-Fi/有线网络
  • 在客户端计算机上手动配置有线或无线连接。

你可以通过下列方式访问虚拟专用网 (VPN) 连接的 EAP 属性:

  • 使用移动设备管理 (MDM) 软件,例如 Intune
  • 在客户端计算机上手动配置 VPN 连接。
  • 使用连接管理器管理工具包 (CMAK) 配置 VPN 连接。

有关配置 EAP 属性的详细信息,请参阅在 Windows 中配置 EAP 配置文件和设置

EAP 的 XML 配置文件

用于不同连接类型的配置文件是 XML 文件,其中包含该连接的配置选项。 每个不同的连接类型都遵循一个特定的架构:

但是,当配置为使用 EAP 时,每个配置文件架构都有一个子元素,即 EapHostConfig 元素。

  • 有线/无线:EapHostConfigEAPConfig 元素的子元素。 MSM > 安全性(有线/无线>OneX> EAPConfig
  • VPN:EapHostConfig 是“NativeProfile”>“身份验证”>“Eap”>“配置”的子元素

此配置语法在以下规范中定义:组策略:无线/有线协议扩展

注意

各种配置 GUI 并不总是显示每个在技术上可能的选项。 例如,Windows Server 2019 及更早版本无法在 UI 中配置 TEAP。 但是,通常可以导入以前配置的现有 XML 配置文件。

本文的其余部分旨在提供组策略/控制面板 UI 的 EAP 特定部分与 XML 配置选项之间的映射,并提供设置说明。

有关配置 XML 配置文件的详细信息,请参阅 XML 配置文件。 有关使用包含 EAP 设置的 XML 配置文件的示例,请参阅通过网站预配 Wi-Fi 配置文件

安全设置

下表说明了使用 802.1X 的配置文件的可配置安全设置。 这些设置映射到 OneX

设置 XML 元素 说明
选择网络身份验证方法: EAPConfig 允许选择用于身份验证的 EAP 方法。 请参阅身份验证方法配置设置手机网络身份验证配置设置
属性 打开所选 EAP 方法的属性对话框。
身份验证模式 authMode 指定用于身份验证的凭据的类型。 支持以下值:

1. 用户或计算机身份验证
2. 计算机身份验证
3. 用户身份验证
4. 来宾身份验证

此上下文中的“Computer”在其他引用中表示“Machine”。 machineOrUser 是 Windows 中的默认值。
最大身份验证失败次数 maxAuthFailures 指定一组凭据允许的最大身份验证失败次数,默认为 1
缓存用户信息,以便后续连接到此网络 cacheUserData 指定是否应缓存用户的凭据以便后续连接到同一网络,默认为 true

高级安全设置 > IEEE 802.1X

如果选中“强制实施高级 802.1X 设置”,则将配置以下所有设置。 如果未选中,则应用默认设置。 在 XML 中,所有元素都是可选的,如果不存在,则使用默认值。

设置 XML 元素 说明
最大 Eapol 启动消息数 maxStart 指定在请求方(Windows 客户端)假定不存在验证器之前,可以发送到验证器(RADIUS 服务器)的 EAPOL-Start 消息的最大数量,默认为 3
启动时间(秒) startPeriod 指定在发送 EAPOL-Start 消息以启动 802.1X 身份验证过程之前等待的时间段(以秒为单位),默认为 5
持有时间(秒) heldPeriod 指定在身份验证尝试失败后等待重新尝试身份验证的时间段(以秒为单位),默认为 1
验证时间(秒) authPeriod 指定在假定不存在验证器之前等待验证器(RADIUS 服务器)响应的时间段(以秒为单位),默认为 18
EAPOL 启动消息 supplicantMode 指定用于 EAPOL-Start 消息的传输方法。 支持以下值:

1. 不传输 (inhibitTransmission)
2. 传输 (includeLearning)
3. 经 IEEE 802.1X 传输 (compliant)

此上下文中的“Computer”在其他引用中表示“Machine”。 compliant 是 Windows 中的默认值,也是无线配置文件的唯一有效选项。

高级安全设置 > 单一登录

下表介绍了单一登录 (SSO)(以前称为登录前访问提供程序 (PLAP))的设置。

设置 XML 元素 说明
为此网络启用单一登录 singleSignOn 指定是否为此网络启用 SSO,默认为 false。 如果网络未要求,请勿在配置文件中使用 singleSignOn
用户登录前立即执行

用户登录后立即执行
type 指定何时应执行 SSO - 用户登录之前或之后。
连接最大延迟(秒) maxDelay 指定 SSO 尝试失败之前的最大延迟(以秒为单位),默认为 10
允许在单一登录期间显示其他对话框 allowAdditionalDialogs 指定是否允许在 SSO 期间显示 EAP 对话框,默认为 false
此网络使用不同的 VLAN,通过计算机和用户凭据进行身份验证 userBasedVirtualLan 指定设备使用的虚拟 LAN (VLAN) 是否根据用户的凭据更改,默认为 false

身份验证方法配置设置

注意

如果网络访问服务器配置为允许对隧道 EAP 方法(如 PEAP)和非隧道 EAP 方法(如 EAP-MSCHAP v2)使用相同类型的身份验证方法,则存在潜在的安全漏洞。 同时部署隧道 EAP 方法和 EAP(不受保护)时,请勿使用相同的身份验证类型。 例如,如果部署 PEAP-TLS,则不要同时部署 EAP-TLS。 这是因为如果你需要隧道的保护,那么允许在隧道之外执行该方法则不能达到目的。

下表说明了每种身份验证方法的可配置设置。

UI 中的 EAP-TLS 设置映射到 EapTlsConnectionPropertiesV1,该架构扩展至 EapTlsConnectionPropertiesV2EapTlsConnectionPropertiesV3

设置 XML 元素 说明
使用我的智能卡 CredentialsSource>SmartCard 指定发出身份验证请求的客户端必须提供用于进行网络身份验证的智能卡证书。
在此计算机上使用证书 CredentialsSource>CertificateStore 指定进行身份验证的客户端必须使用位于“当前用户” 或“本地计算机” 证书存储中的证书。
使用简单证书选择(推荐) SimpleCertSelection 指定 Windows 是否自动选择证书进行身份验证而无需用户交互(如果可能),或者 Windows 是否显示一个下拉列表供用户选择证书。
高级 打开“配置证书选择”对话框
服务器验证选项
为此连接使用一个不同的用户名 DifferentUsername 指定是否使用与证书中用户名不同的用户名进行身份验证。

下面列出了“配置证书选择”的配置设置。 这些设置定义了客户端用于选择相应证书进行身份验证的条件。 此 UI 映射到 TLSExtensions>FilteringInfo

设置 XML 元素 说明
证书颁发者 CAHashListEnabled="true" 指定是否启用证书颁发者筛选。

如果同时启用了“证书颁发者”和“扩展密钥用法(EKU)”,只有那些同时满足这两个条件的证书才被视为可用于向服务器对客户端进行身份验证的有效证书。

根证书颁发机构 IssuerHash 列出满足以下条件的所有颁发者的名称:本地计算机帐户的“受信任的根证书颁发机构”或“中间证书颁发机构”证书存储中存在与这些颁发者对应的证书颁发机构 (CA) 证书。 这包括:

1. 所有根证书颁发机构和中间证书颁发机构。
2. 只包含那些在计算机中存在相应有效证书(例如未过期或未吊销的证书)的颁发者。
3. 允许用于身份验证的最终证书列表只包含那些由该列表中选定的任何颁发者所颁发的证书。

在 XML 中,这是证书的 SHA-1 指纹(哈希)。

扩展密钥用法 (EKU) 支持选择“所有用途”、“客户端身份验证”、“AnyPurpose”或这些选项的任何组合。 指定当选中了某个组合时,所有符合这三个条件中至少一个条件的证书都被视为可用于向服务器对客户端进行身份验证的有效证书。 如果启用了 EKU 筛选,则必须选择其中一个选项,否则“扩展密钥用法 (EKU)”复选框将取消选中。
所有用途 AllPurposeEnabled 选中时,此项指定符合“所有用途”EKU 的证书都被视为可用于向服务器对客户端进行身份验证的有效证书。 所有用途的对象标识符 (OID) 为 0 或为空。
客户端身份验证 ClientAuthEKUListEnabled="true" (> EKUMapInList > EKUName) 指定符合“客户端身份验证”EKU 且具有指定 EKU 列表的证书被视为可用于向服务器对客户端进行身份验证的有效证书。 用于客户端身份验证的对象标识符 (OID) 为 1.3.6.1.5.5.7.3.2
AnyPurpose AnyPurposeEKUListEnabled="true" (> EKUMapInList > EKUName) 指定符合“AnyPurpose”EKU 且具有指定 EKU 列表的证书被视为可用于向服务器对客户端进行身份验证的有效证书。 AnyPurpose 的对象标识符 (OID) 为 1.3.6.1.4.1.311.10.12.1
添加 EKUMapping > EKUMap > EKUName/EKUOID 打开“选择 EKU”对话框,可在其中向“客户端身份验证”列表或 AnyPurpose 列表中添加标准、自定义或特定于供应商的 EKU。

如果在“选择 EKU”对话框中选择“添加”或“编辑”,则会打开“添加/编辑 EKU”对话框,该对话框提供两个选项:
1. 输入 EKU 的名称 - 提供键入自定义 EKU 名称的位置。
2. 输入 EKU OID - 提供键入 EKU 的 OID 的位置。 只允许使用数字、分隔符和 .。 允许通配符(该情况下允许层次结构中的所有子 OID)。

例如,输入 1.3.6.1.4.1.311.* 可表示 1.3.6.1.4.1.311.421.3.6.1.4.1.311.42.2.1

编辑 可让你编辑已添加的自定义 EKU。 无法编辑默认的预定义 EKU。
删除 从“客户端身份验证”或 AnyPurpose 列表中删除所选的 EKU。

服务器验证

许多 EAP 方法都包含客户端用于验证服务器证书的选项。 如果未验证服务器证书,则客户端无法确定它是否与正确的服务器通信。 这会使客户端面临安全风险,包括客户端可能在不知情的情况下连接到未授权网络。

注意

Windows 要求服务器证书具有服务器身份验证 EKU。 此 EKU 的对象标识符 (OID) 为 1.3.6.1.5.5.7.3.1

下表列出了适用于每个 EAP 方法的服务器验证选项。 Windows 11 更新了服务器验证逻辑,使其更加一致(请参阅已更新 Windows 11 中的服务器证书验证行为)。 如果它们发生冲突,下表中的说明将描述 Windows 10 及更早版本的行为。

设置 XML 元素 说明
通过验证证书来验证服务器的标识 EAP-TLS:
PerformServerValidation

PEAP:
PerformServerValidation
此项指定客户端验证提供给客户端计算机的服务器证书是否具有正确的签名、是否未过期,以及是否由受信任的根证书颁发机构 (CA) 所颁发。

禁用此复选框会导致在身份验证过程中,客户端计算机无法验证服务器的标识。 如果不进行服务器身份验证,用户将面临极大的安全风险,用户可能在不知情的情况下连接到未授权网络。

连接到这些服务器 EAP-TLS:
ServerValidation>ServerNames

PEAP:
ServerValidation>ServerNames

EAP-TTLS:
ServerValidation>
ServerNames

TEAP:
ServerValidation>
ServerNames
允许你为提供网络身份验证和授权的远程身份验证拨入用户服务 (RADIUS) 服务器指定名称。

键入的名称必须与各 RADIUS 服务器证书的“主题”字段中显示的名称完全相同,你也可以使用正则表达式 (regex) 来指定服务器名称。

可以使用正则表达式的完整语法来指定服务器名称,但为了区分正则表达式和文本字符串,指定的字符串中必须至少使用一个 *。 例如,可指定 nps.*\.example\.com 来指定 RADIUS 服务器 nps1.example.comnps2.example.com

还可包含 ; 来分隔多个服务器。

如果未指定 RADIUS 服务器,客户端仅会验证 RADIUS 服务器证书是否由受信任的根 CA 颁发。

受信任的根证书颁发机构 EAP-TLS:
ServerValidation>TrustedRootCA

PEAP:
ServerValidation>TrustedRootCA

EAP-TTLS:
ServerValidation>
TrustedRootCAHashes

TEAP:
ServerValidation>
TrustedRootCAHashes
列出受信任的根证书颁发机构。 此列表是基于计算机和用户证书存储中安装的受信任的根 CA 生成的。 你可以指定请求方使用哪些受信任的根 CA 证书来确定其是否信任你的服务器,如运行网络策略服务器 (NPS) 的服务器或配置服务器。 如果未选定受信任的根 CA,则 802.1X 客户端将验证 RADIUS 服务器的计算机证书是否由已安装的受信任的根 CA 颁发。 如果选定了一个或多个受信任的根 CA,则 802.1X 客户端将验证 RADIUS 服务器的计算机证书是否由选定的受信任的根 CA 颁发。

如果未选择受信任的根 CA,客户端会验证 RADIUS 服务器证书是否由任何受信任的根 CA 颁发。

如果你的网络上有公钥基础结构 (PKI),并且使用你的 CA 向 RADIUS 服务器颁发证书,则你的 CA 证书将自动添加到受信任的根 CA 列表中。 你也可以从非 Microsoft 供应商购买 CA 证书。 一些非 Microsoft 的受信任的根 CA 会随你所购买的证书一起提供软件,该软件可将所购买的证书自动安装到“受信任的根证书颁发机构”证书存储中。 在此情况下,该受信任的根 CA 会自动出现在受信任的根 CA 列表中。

请不要为“当前用户”和“本地计算机”指定客户端计算机的“受信任根证书颁发机构”证书存储中尚未列出的受信任根 CA 证书。 如果指定未安装在客户端计算机上的证书,则身份验证将失败。

在 XML 中,这是证书的 SHA-1 指纹(哈希)(或 TEAP 的 SHA-256)。

服务器验证用户提示

下表列出了适用于每个 EAP 方法的服务器验证用户提示选项。 在服务器证书不受信任的情况下,这些选项将用于:

  • 立即使连接失败,或者
  • 允许用户手动接受或拒绝连接。
设置 XML 元素
不提示用户对新服务器或受信任的证书颁发机构进行授权 ServerValidation>DisableUserPromptForServerValidation

当未正确配置和/或未信任服务器证书时,阻止提示用户信任该证书。 为了简化用户体验并防止用户错误地信任攻击者部署的服务器,建议选中此复选框。

手机网络身份验证配置设置

下面分别列出了 EAP-SIM、EPA-AKA 和 EPA-AKA' 的配置设置。

RFC 4186 中定义了 EAP-SIM。 EAP 用户识别模块 (SIM) 用于使用第二代移动网络全球移动通信系统 (GSM) 用户识别模块 (SIM) 的身份验证和会话密钥分发。

UI 中的 EAP-SIM 设置映射到 EapSimConnectionPropertiesV1

项目 XML 元素 说明
使用强密码密钥 UseStrongCipherKeys 指定在选定时,配置文件使用强加密。
当伪标识可用时,请勿向服务器公开真实标识 DontRevealPermanentID 启用后,如果服务器请求永久标识,即使该客户端具有伪标识,也会强制客户端阻止身份验证。 伪标识用于标识隐私,以防止在身份验证期间泄露用户的实际标识或永久标识。
ProviderName 仅在 XML 中可用,该字符串指示允许进行身份验证的提供程序名称。
启用领域的使用 Realm=true 为键入领域名称留出空间。 如果在选择了“启用领域的使用”时此字段被留空,则会按照第三代合作伙伴项目 (3GPP) 标准 23.003 V6.8.0 的说明,使用领域 3gpp.org 从国际移动用户识别码 (IMSI) 派生领域。
指定领域 Realm 提供键入领域名称的位置。 如果已启用“启用领域的使用”,则使用此字符串。 如果此字段为空,则使用派生领域。

WPA3-Enterprise 192 位模式

WPA3-Enterprise 192 位模式是 WPA3-Enterprise 的一种特殊模式,它对无线连接强制实施某些高安全性要求,以提供至少 192 位的安全性。 这些要求符合商用国家安全算法 (CNSA) 套件 CNSSP 15,后者是一组加密算法,已获美国国家安全局 (NSA) 批准用于保护机密和绝密信息。 192 位模式有时可称为“套件 B 模式”,这是对 NSA 套件 B 加密规范的引用,该规范于 2016 年被 CNSA 取代。

从 Windows 10 版本 2004(内部版本 19041)和 Windows Server 2022 开始,WPA3-Enterprise 和 WPA3-Enterprise 192 位模式均可用。 然而,WPA3-Enterprise 在 Windows 11 中被挑选出来作为单独的认证算法。 在 XML 中,这在 authEncryption 元素中指定。

下表列出了 CNSA 套件所需的算法。

算法 说明 参数
高级加密标准 (AES) 用于加密的对称块密码 256 位密钥 (AES-256)
椭圆曲线 Diffie-Hellman (ECDH) 密钥交换 用于建立共享机密(密钥)的非对称算法 384 位素模曲线 (P-384)
椭圆曲线数字签名算法 (ECDSA) 用于数字签名的非对称算法 384 位素模曲线 (P-384)
安全哈希算法 (SHA) 加密哈希函数 SHA-384
Diffie-Hellman (DH) 密钥交换 用于建立共享机密(密钥)的非对称算法 3072 位取模
Rivest-Shamir-Adleman (RSA) 用于数字签名或密钥建立的非对称算法 3072 位取模

与 CNSA 保持一致,WPA3-Enterprise 192 位模式要求 EAP-TLS 与以下具有限制的密码套件一起使用:

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    • 使用 384 位素模曲线 P-384 的 ECDHE 和 ECDSA
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 / TLS_DHE_RSA_AES_256_GCM_SHA384
    • 使用 384 位素模曲线 P-384 的 ECDHE
    • RSA >= 3072 位取模

注意

P-384 也称为 secp384r1nistp384。 不允许使用其他椭圆曲线,如 P-521。

SHA-384 包含在 SHA-2 系列哈希函数中。 不允许使用其他算法和变体,例如 SHA-512 或 SHA3-384。

Windows 仅支持 WPA3-Enterprise 192 位模式的 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 密码套件。 不支持 TLS_DHE_RSA_AES_256_GCM_SHA384 密码套件。

TLS 1.3 使用新的简化 TLS 套件,其中只有 TLS_AES_256_GCM_SHA384 与 WPA3-Enterprise 192 位模式兼容。 由于 TLS 1.3 需要 (EC)DHE 并允许 ECDSA 或 RSA 证书,以及 AES-256 AEAD 和 SHA384 哈希,TLS_AES_256_GCM_SHA384 等同于 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384。 但是,RFC 8446 要求符合 TLS 1.3 的应用程序支持 P-256,而 CNSA 禁止这样做。 因此,WPA3-Enterprise 192 位模式不能完全符合 TLS 1.3。 但是,TLS 1.3 和 WPA3-Enterprise 192 位模式不存在已知的互操作性问题。

若要为 WPA3-Enterprise 192 位模式配置网络,Windows 要求将 EAP-TLS 与满足上述要求的证书一起使用。

其他资源