

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

# 基于证书的身份验证
<a name="certificate-based-authentication"></a>

你可以对加入 Microsoft Active Direct WorkSpaces ory 的应用程序队列使用基于证书的身份验证。这样，当用户登录时，系统就不会再提示输入 Active Directory 域密码。通过对您的 Active Directory 域使用基于证书的身份验证，您可以：
+ 依靠您的 SAML 2.0 身份提供商对用户进行身份验证，并提供 SAML 断言以匹配 Active Directory 中的用户。
+ 使用更少的用户提示创建单点登录体验。
+ 使用 SAML 2.0 身份提供商启用无密码身份验证流程。

基于证书的身份验证使用您的中的 AWS 私有证书颁发机构（AWS 私有 CA）资源。 AWS 账户使用 AWS 私有 CA，您可以创建私有证书颁发机构 (CA) 层次结构，包括根和从属 CAs结构。您还可以创建自己的 CA 层次结构，并从中颁发对内部用户进行身份验证的证书。有关更多信息，请参阅[什么是 AWS 私有 CA](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html)。

当您使用 AWS 私有 CA 进行基于证书的身份验证时， WorkSpaces 应用程序会在每个 WorkSpaces 应用程序队列实例的会话预留时自动为您的用户请求证书。它使用预置了证书的虚拟智能卡对用户进行 Active Directory 身份验证。

运行 Windows 实例的 WorkSpaces 应用程序加入域的队列（包括单会话和多会话队列）支持基于证书的身份验证 (CBA)。要在多会话队列上启用 CBA，必须使用使用在 2025 年 7 WorkSpaces 月 2 日当天或之后发布的 WorkSpaces 应用程序代理的应用程序映像。或者，您的映像必须使用 2025 年 11 月 2 日当天或之后发布的托管 WorkSpaces 应用程序映像更新。

**Topics**
+ [前提条件](certificate-based-authentication-prereq.md)
+ [启用基于证书的身份验证](certificate-based-authentication-enable.md)
+ [管理基于证书的身份验证](certificate-based-authentication-manage.md)
+ [启用跨账户 PCA 共享](pca-sharing.md)

# 前提条件
<a name="certificate-based-authentication-prereq"></a>

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

1. 设置加入域的实例集并配置 SAML 2.0。确保对 SAML\$1Subject `NameID` 使用 `username@domain.com` `userPrincipalName` 格式。有关更多信息，请参阅 [步骤 5：为 SAML 身份验证响应创建断言](external-identity-providers-setting-up-saml.md#external-identity-providers-create-assertions)。
**注意**  
如果您要使用基于证书的身份验证，请不要启用堆栈中的 **Active Directory 的智能卡登录**。有关更多信息，请参阅 [智能卡](feature-support-USB-devices-qualified.md#feature-support-USB-devices-qualified-smart-cards)。

1. 使用 WorkSpaces 应用程序代理版本 10-13-2022 或更高版本处理您的映像。有关更多信息，请参阅 [保留您的 Amazon WorkSpaces 应用程序图片 Up-to-Date](keep-image-updated.md)。

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

1. 将 `sts:TagSession` 权限添加到与您的 SAML 2.0 配置一起使用的 IAM 角色信任策略。有关更多信息，请参阅[在 AWS STS中传递会话标签](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html.html)。使用基于证书的身份验证时需要此权限。有关更多信息，请参阅 [步骤 2：创建 SAML 2.0 联合身份验证 IAM 角色](external-identity-providers-setting-up-saml.md#external-identity-providers-grantperms)。

1. 如果您的 Active Directory 中没有配置 AWS 私有证书颁发机构 (CA)，请使用私有 CA 创建私有证书颁发机构 (CA)。 AWS 私有 CA 必须使用基于证书的身份验证。有关更多信息，请参阅[规划 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 应用程序队列实例和域控制器访问的在线 CRL 分发点。这需要对为 AWS 私有 CA CRL 条目配置的 Amazon S3 存储桶进行未经身份验证的访问权限，或者如果 CloudFront 分配阻止了公开访问，则需要有权访问 Amazon S3 存储桶。有关这些选项的更多信息，请参阅[计划证书吊销列表（CRL）](https://docs.aws.amazon.com/privateca/latest/userguide/crl-planning.html)。

1. 使用密钥标记您的私有 CA，该密钥`euc-private-ca`有权指定用于基于 WorkSpaces 应用程序证书的身份验证的 CA。此键不需要值。有关更多信息，请参阅[管理私有 CA 的标签](https://docs.aws.amazon.com/privateca/latest/userguide/PcaCaTagging.html)。有关 WorkSpaces 应用程序中用于授予资源权限的 AWS 托管策略的更多信息 AWS 账户，请参阅[AWS 访问 WorkSpaces 应用程序资源所需的托管策略](managed-policies-required-to-access-appstream-resources.md)。

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 建议 Active Directory 企业证书颁发机构自动管理域控制器证书的注册。
**注意**  
如果您使用 AWS 托管 Microsoft AD，则可以在满足域控制器证书要求的 Amazon EC2 实例上配置证书服务。有关配置了 A [ctive Directory 证书服务的 AWS 托管 Microsoft AD 的部署示例，请参阅将 Active Directory 部署到新的亚马逊虚拟私有云](https://docs.aws.amazon.com/launchwizard/latest/userguide/launch-wizard-ad-deploying-new-vpc.html)。  
使用 AWS 托管 Microsoft AD 和 Active Directory 证书服务，您还必须创建从控制器的 VPC 安全组到运行证书服务的亚马逊 EC2 实例的出站规则。您必须为安全组提供对 TCP 端口 135 以及端口 49152 至 65535 的访问权限，才能启用证书自动注册。Amazon EC2 实例还必须允许域实例（包括域控制器）在这些相同的端口上进行入站访问。有关查找 AWS 托管 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 控制台上，或者使用 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 应用程序队列实例。
**注意**  
当 WorkSpaces 应用程序队列实例加入域时，Active Directory 必须自动 NTAuth 将 CA 分发给受信任的根证书颁发机构和企业存储。

对于 Windows 操作系统，CA（证书颁发机构）的分发是自动进行的。但是，对于 Rocky Linux 和红帽企业 Linux，您必须从 A WorkSpaces pplications Directory Config 所使用的 CA 下载根 CA 证书。如果您的 KDC 根 CA 证书不同，则还必须下载这些证书。在使用基于证书的身份验证之前，必须将这些证书导入到映像或快照中。

在映像上，应该有一个名为 /`etc/sssd/pki/sssd_auth_ca_db.pem` 的文件。它应该类似以下内容：

```
-----BEGIN CERTIFICATE-----
Base64-encoded certificate chain from ACM Private CA 
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded certificate body from ACM private CA
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded root CA KDC certificate chain
-----END CERTIFICATE-----
```

**注意**  
在跨区域或账户复制映像，或者将映像与新的 Active Directory 重新关联时，需要在映像生成器上使用相关证书重新配置此文件，并在使用前重新拍摄快照。

以下是下载根 CA 证书的说明：

1. 在映像生成器上，创建一个名为 `/etc/sssd/pki/sssd_auth_ca_db.pem` 的文件。

1. 打开 [AWS Private CA 控制台](https://console.aws.amazon.com/acm-pca/)。

1. 选择与您的 WorkSpaces 应用程序目录 Config 一起使用的私有证书。

1. 选择 **CA 证书**选项卡。

1. 将证书链和证书正文复制到映像生成器上的 `/etc/sssd/pki/sssd_auth_ca_db.pem` 中。

如果使用的根 CA 证书与您 KDCs WorkSpaces 的 Applications Directory Config 使用的根 CA 证书不同，请按照以下示例步骤下载它们：

1. 连接到与您的映像生成器加入相同域的 Windows 实例。

1. 打开 `certlm.msc`。

1. 在左侧窗格中，选择**受信任的根证书颁发机构**，然后选择**证书**。

1. 对于每个根 CA 证书，打开上下文（右键单击）菜单。

1. 选择**所有任务**，选择**导出**以打开“证书导出向导”，然后选择**下一步**。

1. 选择 **Base64 编码的 X.509 (.CER)**，然后选择**下一步**。

1. 选择**浏览**，输入文件名，然后选择**下一步**。

1. 选择**结束**。

1. 在文本编辑器中打开导出的证书。

1. 将文件内容复制到映像生成器上的 `/etc/sssd/pki/sssd_auth_ca_db.pem` 中。

# 启用基于证书的身份验证
<a name="certificate-based-authentication-enable"></a>

要启用基于证书的身份验证，请完成以下步骤。

**启用基于证书的身份验证**

1. 在 [https://console.aws.amazon.com/appst WorkSpaces ](https://console.aws.amazon.com/appstream2) ream2 上打开应用程序控制台。

1. 在导航窗格中，选择**目录配置**。选择要配置的目录配置，然后选择**编辑**。

1. 选择**启用基于证书的身份验证**。

1. 确认您的私有 CA ARN 已关联到列表中。要显示在列表中，您应将私有 CA 存储在相同的 AWS 账户 和中 AWS 区域。您还必须使用名为 `euc-private-ca` 的密钥标记私有 CA。

1. 在回退模式下配置目录日志。在回退模式下，如果基于证书的身份验证不成功，用户可以使用其 AD 域密码登录。仅当用户知道自己的域密码时，才建议这样做。关闭回退功能后，如果出现锁屏或 Windows 注销，则会话可能会断开用户的连接。如果开启了回退功能，则会话会提示用户输入 AD 域密码。

1. 选择**保存更改**。

1. 基于证书的身份验证现已启用。当用户使用来自 WorkSpaces 应用程序 Web 客户端或适用于 Windows 的客户端（版本 1.1.1099 及更高版本）的已加入域的队列通过 SAML 2.0 向 WorkSpaces 应用程序堆栈进行身份验证时，他们将不再收到输入域密码的提示。当连接到启用了基于证书的身份验证的会话时，用户将看到 “正在使用基于证书的身份验证进行连接...”消息。

# 管理基于证书的身份验证
<a name="certificate-based-authentication-manage"></a>

启用基于证书的身份验证后，请查看以下任务。

**Topics**
+ [私有 CA 证书](certificate-based-authentication-manage-CA.md)
+ [最终用户证书](certificate-based-authentication-manage-certs.md)
+ [审核报告](certificate-based-authentication-manage-audit.md)
+ [日志记录和监控](certificate-based-authentication-manage-logging.md)

# 私有 CA 证书
<a name="certificate-based-authentication-manage-CA"></a>

在典型配置中，私有 CA 证书的有效期为 10 年。有关更换证书过期的私有 CA 或重新颁发具有新有效期的私有 CA 的更多信息，请参阅[管理私有 CA 生命周期](https://docs.aws.amazon.com/privateca/latest/userguide/ca-lifecycle.html) 

# 最终用户证书
<a name="certificate-based-authentication-manage-certs"></a>

P AWS rivate CA 为 WorkSpaces 应用程序颁发的最终用户证书基于证书的身份验证不需要续订或撤销。这些证书是短暂的。 WorkSpaces 应用程序会为每个新会话自动颁发新证书，对于持续时间较长的会话，则每 24 小时自动颁发一次新证书。 WorkSpaces 应用程序会话控制这些最终用户证书的使用。如果您结束会话， WorkSpaces 应用程序将停止使用该证书。这些最终用户证书的有效期比典型的 AWS 私有 CA CRL 发行版短。因此，无需吊销最终用户证书，这些证书也不会出现在 CRL 中。

# 审核报告
<a name="certificate-based-authentication-manage-audit"></a>

您可以创建审核报告，以列出您的私有 CA 已颁发和吊销的所有证书。有关更多信息，请参阅[将审核报告与私有 CA 结合使用](https://docs.aws.amazon.com/privateca/latest/userguide/PcaAuditReport.html)。

# 日志记录和监控
<a name="certificate-based-authentication-manage-logging"></a>

您可以使用记录 WorkSpaces 应用程序 CloudTrail 对私有 CA 的 API 调用。有关更多信息，请参阅[什么是 AWS CloudTrail？](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 和[使用 CloudTrail](https://docs.aws.amazon.com/privateca/latest/userguide/PcaCtIntro.html)。在 CloudTrail 事件历史记录中，您可以查看应用程序用户名**GetCertificate**创建**IssueCertificate**的 **acm-pca.amazonaws.com** 事件源中的事件名称。 WorkSpaces **EcmAssumeRoleSession**将为每个基于 WorkSpaces 应用程序证书的身份验证请求记录这些事件。有关更多信息，请参阅[使用事件历史记录查看 CloudTrail 事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

# 启用跨账户 PCA 共享
<a name="pca-sharing"></a>

私有 CA（PCA）跨账户共享允许为其他账户授予使用集中式 CA 的权限。该 CA 可以通过使用 [AWS Resource Access Manager](https://aws.amazon.com/ram/)（RAM）来管理权限，从而生成和颁发证书。这样就无需在每个账户中都使用私有 CA。私有 CA 跨账户共享可以与基于 WorkSpaces 应用程序证书的身份验证 (CBA) 一起使用。 AWS 区域

要将共享的私有 CA 资源与 WorkSpaces 应用程序 CBA 一起使用，请完成以下步骤：

1. 以集中 AWS 账户方式为 CBA 配置私有 CA。有关更多信息，请参阅 [基于证书的身份验证](certificate-based-authentication.md)。

1. 与 WorkSpaces 应用程序资源使用 CBA AWS 账户 的资源共享私有 CA。为此，请遵循 [How to use AWS RAM to share your ACM Private CA cross-account](https://aws.amazon.com/blogs/security/how-to-use-aws-ram-to-share-your-acm-private-ca-cross-account/) 中的步骤。您无需完成步骤 3 来创建证书。您可以与个人共享私有 CA AWS 账户，也可以通过共享私有 CA AWS Organizations。如果您与个人账户共享，则需要使用 AWS Resource Access Manager 控制台或接受资源账户中的共享私有 CA APIs。

   配置共享时，请确认 AWS Resource Access Manager 资源账户中私有 CA 的资源共享使用`AWSRAMBlankEndEntityCertificateAPICSRPassthroughIssuanceCertificateAuthority`托管权限模板。此模板与 WorkSpaces 应用程序服务角色在颁发 CBA 证书时使用的 PCA 模板一致。

1. 共享成功后，使用资源账户中的私有 CA 控制台查看共享的私有 CA。

1. 使用 API 或 CLI 将私有 CA ARN 与 Applications Di WorkSpaces rectory Config 中的 CBA 相关联。目前， WorkSpaces 应用程序控制台不支持选择共享私有 CA ARNs。以下是 CLI 命令的示例：

   `aws appstream update-directory-config --directory-name <value> --certificate-based-auth-properties Status=<value>,CertificateAuthorityArn=<value>` 