Loading...

如何在多个 AWS 账户和区域中构建 CA 层次结构以支持全球组织 安全博客



在多个AWS账户和区域中构建CA层级

作者:Jiaqing Xue Matt Yu Patrick Palmer Xinran Liu 2024年7月26日发布于 AWS Private Certificate Authority

关键要点

使用AWS Private CA构建证书颁发机构CA层级可以帮助企业在多个区域和账户中管理证书。本文介绍了如何创建一个包含根CA和从属CA的两级CA层级。根CA负责签发证书给从属CA,而从属CA负责为终端实体签发证书。强烈建议将根CA放在专用账户中并实施严格的访问控制。

在全球化的组织中,构建一个多账户和多区域的CA层级非常复杂。使用 AWS Private Certificate Authority ,可以简化这一架构的建立。很多企业在多个区域通过多个AWS账户运营,需要为符合组织结构而创建CA层级,这一过程往往被认为复杂。本文将引导您如何建立一个包含多个地区和账户的两级CA层级。

证书通常用于建立加密网络连接,以满足组织数据的安全要求,比如数据库连接。例如,总部位于新加坡的SaaS公司为位于多个区域的用户提供管理数据库服务,因而需要建立根CA位于新加坡和多个从属CA全球分布的CA层级。

另外一个例子是大型制造公司在全球销售数百万的物联网IoT设备,需要向这些设备颁发证书以进行身份验证、认证和安全网络连接。不同的设备类型或业务需求由不同团队管理,这些团队在组织内有各自独立的AWS账户。这些团队需要自己的CA来满足不同类型设备的证书政策要求如密钥长度、有有效期等,从而保持业务灵活性并控制风险范围。在这种情况下,构建与组织结构相匹配的CA层级是至关重要的。

在CA层级中,根CA负责向从属CA签发证书,从属CA则负责向终端实体签发证书。因此,根CA是信任链的根源,失去对根CA的信任可能导致它所签发的终端实体证书失效。因此,建议将根CA放置于专用账户内,并对其使用实施严格的访问管理和审计。有关更多最佳实践,请参见 AWS Private CA最佳实践。

关键概念:证书模板

在AWS Private CA中,当您使用 AWS命令行界面CLI 或 AWS APIs 签发证书时,您需要提供证书模板的Amazon资源名称ARN,以指定证书的X509v3参数。证书模板定义了可以签发的证书类型,并允许CA管理员控制签发的证书及其属性。

AWS Private CA提供的证书模板包含X509v3参数中基本约束的最佳实践值。比如,如果是终端实体证书,基本约束参数中的cA值为False;如果是CA证书,则需将cA值设置为True,并根据证书在CA层级中的级别设置pathLenConstraint。

在签发证书时,您必须根据证书的预期用途选择适当的证书模板。有关证书模板的更多信息,请参见 理解证书模板。

两级CA层级的构建过程

现在您已经了解了CA层级的核心概念,我们将展示如何使用位于不同账户和区域的两个CA来建立一个CA层级,并通过从属CA来为与Web应用程序相关联的终端实体颁发证书。在这个例子中,您将在俄勒冈uswest2区域创建一个根CA,同时在新加坡apsoutheast1区域创建一个从属CA。

以下图示展示了您将要构建的架构:

前提条件

您需要以下前提条件来构建并实现以下解决方案:

指定两个不同的AWS账户来创建CA层级。在这例子中我们使用一个称为根CA账户,另一个称为从属CA账户。确认能够在根CA账户中登录到 AWS CloudShell,并确保您的控制台用户或角色具备 AWS身份和访问管理IAM 策略AWSCertificateManagerPrivateCAFullAccess,或至少具有在AWS Private CA中创建CA和签发证书的权限。确认您可以在从属CA账户中访问具有适当权限的角色,以在AWS Private CA中创建CA,通过 AWS证书管理器ACM签发证书,并为样本Web应用程序创建一个 应用负载均衡器ALB。

构建CA层级

在准备工作完成后,您可以开始构建CA层级,包括:

根CA从属CA从属CA证书终端实体证书

创建根CA

在根CA账户的AWS管理控制台中,导航至AWS Private CA并确保您所在的区域为俄勒冈uswest2。根据 本指南 创建一个CA。在CA类型选项中选择根,以表明这是一个根CA。

创建完成后,CA将处于待证书状态。通过选择操作并选择安装CA证书来完成配置。

根CA将变为活动状态。

创建从属CA

登录到为从属CA指定的第二个账户,并确保您的区域与根CA不同。在例子中,我在新加坡apsoutheast1区域创建这个CA。类似于根CA,在控制台中创建CA,并选择从属作为CA类型选项。

极光vqn与根CA一样,从属CA也处于待证书状态,因此您需要安装其证书。

签发从属CA证书

在CA层级中,从属CA的证书必须由高层CA即根CA颁发。为了将从属CA配置为活动状态,您需要获取从属CA的证书签名请求CSR,并使用根CA对其进行签名以颁发证书。

在从属CA账户中获取从属CA的CSR以便签名。在从属CA的详细信息页面中,通过选择操作并选择安装从属CA证书,CSR将在选择外部私有CA作为CA类型时显示。将其导出到本地机器上的一个名为subcacsr的文件中。

虽然从属CA由AWS Private CA管理,但因其在与根CA不同的账户和区域内被视为外部私有CA。

在示例场景中,您希望从属CA只直接向终端实体颁发证书,因此其证书必须使用根CA的SubordinateCACertificatePathLen0/V1模板签名。这将对CA施加限制,表明该从属CA不能为另一个CA签署CSR。

为此,请切换到根CA账户并使用CloudShell运行AWS CLI命令。使用文本编辑器在CloudShell中重新创建subcacsr文件,然后使用以下命令颁发从属CA证书。将rootcaarn替换为您先前创建的根CA的ARN:

bashaws acmpca issuecertificate region uswest2 certificateauthorityarn ltrootcaarngt csr file//subcacsr signingalgorithm SHA256WITHRSA templatearn arnawsacmpcatemplate/SubordinateCACertificatePathLen0/V1 validity Value=5Type=YEARS

输出类似于以下内容。注意返回的CertificateArn,因为它将在后续步骤中用作:

json{ CertificateArn ltsubcacertificatearngt}

在根CA账户中,导出从属CA的证书和证书链。将CLI返回的文本存储到本地机器上的文件中以便稍后在从属CA账户中使用。将和替换为实际值。导出从属CA的证书:

bash aws acmpca getcertificate region uswest2 certificateauthorityarn ltrootcaarngt certificatearn ltsubcacertificatearngt query “Certificate” output text

导出从属CA的证书链:

bash aws acmpca getcertificate region uswest2 certificateauthorityarn ltrootcaarngt certificatearn ltsubcacertificatearngt query “CertificateChain” output text

切换回从属CA账户,导入从属CA的证书和根证书链以激活从属CA。在安装从属CA证书的窗口中,选择操作并选择安装CA证书。 使用上一步导出的证书填充证书主体。使用上一步导出的证书链填充证书链。选择确认并安装。

现在,从属CA处于活动状态。

验证终端实体证书

现在您已经建立了两级CA层级,您可以在从属CA账户中颁发一个终端实体证书并部署Web应用程序。使用Web浏览器访问Web应用程序并验证CA层级。

前往从属CA账户的AWS证书管理器控制台并请求一个私有证书。在证书颁发机构详细信息部分,选择之前构建的从属CA。

在从属CA账户中,部署一个样本Web应用程序,并将其放在应用负载均衡器ALB后面。该样本Web应用程序使用ALB监听器的一项功能,返回固定响应,无需配置后端计算资源。将监听器配置为使用上一步骤颁发的证书处理HTTPS流量。

通过访问Web应用程序并查看Web浏览器中的证书详情来检查CA的层级关系。

从该图中可以看出,CA层级的证书信任链已经成功建立。终端实体证书左侧是由CA Example Corp SG L2 CA 签发的,您可以从其发行者名称中识别出。在中间的是证书 Example Corp SG L2 CA,其发行者为 Example Corp Root CA。您可以在右侧看到 Example Corp Root CA 的证书,它是根CA,其发行者名称为自身。当主题和发行者属性匹配时,说明这是一个根CA。

如何在多个 AWS 账户和区域中构建 CA 层次结构以支持全球组织 安全博客

总结

在本文中,我们展示了如何在AWS账户和区域之间构建CA层级解决方案,使用AWS Private CA。根据本文提供的指南,您可以构建复杂的CA层级,以帮助满足全球业务的安全和合规要求。

进一步阅读

互联网X509公钥基础设施证书和证书撤销列表CRL规范设置认证路径的长度约束

如果您对本文有反馈,请在下方评论区提交。如果您对本文有任何问题,请在 AWS Private Certificate Authority的rePost 启动新线程,或 联系AWS支持。

Jiaqing XueJiaqing是AWS的解决方案架构师,专注于帮助客户在AWS上构建更安全、现代的应用程序。业余时间,他喜欢编码。

Patrick PalmerPatrick是首席安全专家解决方案架构师,帮助全球客户安全地使用AWS服务,专注于密码学。工作之外,他喜欢与日益增长的家庭共度时光和玩视频游戏。

Xinran LiuXinran是AWS的解决方案架构师,对边缘计算和DevOps感兴趣。他有14年的经验,领导大规模工程项目,在设计和管理本地和基于云的基础设施方面具有专业知识。

Matt YuMatt是AWS的安全解决方案架构师,负责为客户提供端到端的云安全解决方案。他在身份与访问管理、威胁检测和云安全保护方面拥有丰富的经验。

标签 AWS Private Certificate Authority 安全博客

极光加速器官方网站,为您提供全球连接轻松体验,一键完成,提升网络稳定性与速度,解决跨区域访问的烦恼。