

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 先决条件
<a name="certificate-based-authentication-prereq"></a>

使用基于证书的身份验证之前，请完成以下步骤。

1. 配置集成了 SAML 2.0 的 WorkSpaces Pools 目录，以使用基于证书的身份验证。有关更多信息，请参阅 [配置 SAML 2.0 并创建 WorkSpaces 池目录](create-directory-pools.md)。
**注意**  
如果您要使用基于证书的身份验证，请不要启用池目录中的**智能卡登录**。

1. 在 SAML 断言中配置 `userPrincipalName` 属性。有关更多信息，请参阅 [步骤 7：为 SAML 身份验证响应创建断言](create-directory-pools.md#saml-directory-create-assertions)。

1. 在 SAML 断言中配置 `ObjectSid` 属性。您可以使用此属性与 Active Directory 用户进行强映射。如果 `ObjectSid` 属性与 SAML\_Subject `NameID` 中指定的用户的 Active Directory 安全标识符（SID）不匹配，则基于证书的身份验证将失败。有关更多信息，请参阅 [步骤 7：为 SAML 身份验证响应创建断言](create-directory-pools.md#saml-directory-create-assertions)。
**注意**  
根据 [Microsoft KB5014754](https://support.microsoft.com/en-us/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16)，2025 年 9 月 10 日之后，基于证书的身份验证要求必须配置 `ObjectSid` 属性。

1. 将 `sts:TagSession` 权限添加到与您的 SAML 2.0 配置一起使用的 IAM 角色信任策略。有关更多信息，请参阅《AWS Identity and Access Management 用户指南》**中的[在 AWS STS 中传递会话标签](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html.html)。使用基于证书的身份验证时需要此权限。有关更多信息，请参阅 [步骤 5：创建 SAML 2.0 联合身份验证 IAM 角色](create-directory-pools.md#saml-directory-saml-federation-role-in-iam)。

1. 如果您的 Active Directory 没有配置私有证书颁发机构（CA），请使用 AWS 私有 CA 创建一个。AWS使用基于证书的身份验证时需要私有 CA。有关更多信息，请参阅《AWS 私有证书颁发机构 用户指南》**中的[规划您的 AWS 私有 CA 部署](https://docs.aws.amazon.com/privateca/latest/userguide/PcaPlanning.html)。以下是许多基于证书的身份验证使用案例中常见的 AWS 私有 CA 设置：
   + **CA 类型选项**
     + **短期证书 CA 使用模式** – 如果 CA 仅为基于证书的身份验证颁发最终用户证书，则建议使用此模式。
     + **带有根 CA 的单级层次结构** – 选择从属 CA 以将其与现有 CA 层次结构集成。
   + **密钥算法选项** – RSA 2048
   + **主题可分辨名称选项** – 使用合适的选项在 Active Directory 受信任的根证书颁发机构存储中识别此 CA。
   + **证书吊销选项** – CRL 分发
**注意**  
基于证书的身份验证需要一个可从 WorkSpaces Pools 中 WorkSpaces 和域控制器访问的在线 CRL 分发点。这需要以未经身份验证的方式访问为 AWS 私有 CA CRL 条目配置的 Amazon S3 存储桶，或者如果阻止了公共访问，则需要拥有 Amazon S3 存储桶访问权限的 CloudFront 分配。有关这些选项的更多信息，请参阅《AWS 私有证书颁发机构 用户指南》**中的[规划证书吊销列表（CRL）](https://docs.aws.amazon.com/privateca/latest/userguide/crl-planning.html)。

1. 使用名为 `euc-private-ca` 的键标记您的私有 CA，以指定该 CA 用于 WorkSpaces Pools 基于证书的身份验证。此键不需要值。有关更多信息，请参阅《AWS 私有证书颁发机构 用户指南》**中的[管理私有 CA 的标签](https://docs.aws.amazon.com/privateca/latest/userguide/PcaCaTagging.html)。

1. 基于证书的身份验证使用虚拟智能卡进行登录。有关更多信息，请参阅 [Guidelines for enabling smart card logon with third-party certification authorities](https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/enabling-smart-card-logon-third-party-certification-authorities)。按照以下步骤进行操作：

   1. 使用域控制器证书配置域控制器，以对智能卡用户进行身份验证。如果您在 Active Directory 中配置了 Active Directory 证书服务企业 CA，它会自动使用启用智能卡登录的证书注册域控制器。如果您没有 Active Directory 证书服务，请参阅[对第三方 CA 的域控制器证书的要求](https://learn.microsoft.com/en-US/troubleshoot/windows-server/windows-security/requirements-domain-controller)。您可以使用 AWS 私有 CA 创建域控制器证书。如果这样做，请不要使用为短期证书配置的私有 CA。
**注意**  
如果使用 AWS Managed Microsoft AD，则可以在满足域控制器证书要求的 Amazon EC2 实例上配置证书服务。有关配置了 Active Directory 证书服务的 AWS Managed Microsoft AD 的部署示例，请参阅[将 Active Directory 部署到新的 Amazon Virtual Private Cloud](https://docs.aws.amazon.com/launchwizard/latest/userguide/launch-wizard-ad-deploying-new-vpc.html)。  
使用 AWS Managed Microsoft AD 和 Active Directory 证书服务，您还必须创建从控制器的 VPC 安全组到运行证书服务的 Amazon EC2 实例的出站规则。您必须为安全组提供对 TCP 端口 135 以及端口 49152 至 65535 的访问权限，才能启用证书自动注册。Amazon EC2 实例还必须允许域实例（包括域控制器）在这些相同的端口上进行入站访问。有关查找 AWS Managed Microsoft AD 的安全组的更多信息，请参阅[配置 VPC 子网和安全组](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_tutorial_setup_trust_prepare_mad.html#tutorial_setup_trust_open_vpc)。

   1. 在 AWS 私有 CA 控制台上导出私有 CA 证书，或者使用 SDK 或 CLI 导出私有 CA 证书。有关更多信息，请参阅[导出私有证书](https://docs.aws.amazon.com/acm/latest/userguide/export-private.html)。

   1. 将私有 CA 发布到 Active Directory。登录到域控制器或已加入域的计算机。将私有 CA 证书复制到任意 `{{<path>}}\{{<file>}}`，然后以域管理员身份运行以下命令。您也可以使用组策略和 Microsoft PKI Health Tool（PKIView）发布 CA。有关更多信息，请参阅[配置说明](https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/enabling-smart-card-logon-third-party-certification-authorities#configuration-instructions)。

      ```
      certutil -dspublish -f {{<path>}}\<file> RootCA
      ```

      ```
      certutil -dspublish -f {{<path>}}\<file> NTAuthCA
      ```

      确保命令成功完成，然后删除私有 CA 证书文件。根据 Active Directory 复制设置，CA 可能需要几分钟才能发布到您的域控制器和 WorkSpaces Pools 中的 WorkSpaces。
**注意**  
Active Directory 必须在 WorkSpaces Pools 中的 WorkSpaces 加入域时自动将 CA 分发给受信任的根证书颁发机构和 Enterprise NTAuth 存储。
**注意**  
Active Directory 域控制器必须处于兼容模式，证书强制执行才能支持基于证书的身份验证。有关更多信息，请参阅 Microsoft Support 文档中的 [KB5014754 - Windows 域控制器上基于证书的身份验证更改](https://support.microsoft.com/en-us/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16)。如果您使用的是 AWS 托管 Microsoft AD，请参阅[配置目录安全设置](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_directory_settings.html)，以了解更多信息。