项目展示

如何使用 AWS Private CA 发行用例绑定证书 安全博客


使用 AWS Private CA 发行用例绑定证书的指南

文章重点

在本篇文章中,我们将介绍如何利用 AWS Private Certificate AuthorityAWS Private CA 发行针对特定用例定制的 X509 证书。这些用例绑定证书的用途在证书的组件中被明确定义,例如 Key Usage 和 Extended Key Usage 扩展。我们将指导您如何通过 IssueCertificate API 操作来定义您的使用情况。

重要概念

AWS Private CA 服务使您能够在 AWS 云中建立自己的公钥基础设施PKI并发行可在组织内部使用的证书。AWS Private CA 发行的证书支持 Key Usage 和 Extended Key Usage 扩展。透过使用这些扩展和特定值,您可以在创建证书时将其用法约束于特定的用例。

证书模板和用例

在 AWS Private CA 中,Key Usage 和 Extended Key Usage 扩展及其值是通过配置模板来指定的,该模板在 IssueCertificate API 操作中传递。AWS 提供的 基准模板 涵盖了最常见的证书用例,如 SSL/TLS 服务器身份验证或代码签名。然而,对于未在基准模板中定义的其他用例,您可以在 IssueCertificate 请求中传递空的证书模板,以及所需的 Key Usage 和 Extended Key Usage 值。

以下是一些用例示例:

如何使用 AWS Private CA 发行用例绑定证书 安全博客用例扩展 Key Usage 值SSL/TLS 证书服务器身份验证、客户端身份验证电子邮件保护S/MIME电子邮件保护智能卡身份验证智能卡登录文件签名文件签名代码签名代码签名符合 Matter 连接标准的证书各种 Matter 准则

如何在 AWS CLI 中发行用例绑定证书

要发行用例绑定证书,您需具备适当的 AWS 身份与访问管理 (IAM) 权限,并确保 AWS Private CA 拥有 Active 状态。可以通过以下命令确认您的 Private CA 是否处于活动状态:

aws acmpca listcertificateauthorities

成功执行后,应显示:

Status ACTIVE

确认状态后,请记下您的 Private CA Amazon Resource NameARN。

接下来使用 IssueCertificate 操作来发行用例绑定的证书。您可以使用以下 AWS CLI 命令进行调用:

aws acmpca issuecertificate

发行证书时需传递多个参数,例如:

(certificateauthorityarn) 您的 Private CA 的 ARN。(csr) 以 PEM 格式传递的 CSR。必须以 blob 格式传递,例如 fileb//。(validity) 设置证书的 “Not After” 日期到期日。(signingalgorithm) 证书的签名算法,值必须与 Private CA 的算法家族匹配RSA 或 ECDSA。

接下来,我们将演示如何发行两个用例绑定的最终用户证书。一个将用于电子邮件保护,另一个将用于智能卡身份验证。

使用 API passthrough 发行电子邮件保护证书

使用以下命令创建密钥对和 CSR:

openssl req out csrdemo1csr new newkey rsa2048 nodes keyout privatekeydemo1pem

使用以下命令发行以电子邮件保护为目的的最终用户证书:

aws acmpca issuecertificate certificateauthorityarn arnawsacmpcaltregiongtltaccountIDgtcertificateauthority/11111111111111111111111111111111 csr fileb//csrdemo1csr templatearn arnawsacmpcatemplate/BlankEndEntityCertificateAPIPassthrough/V1 signingalgorithm SHA256WITHRSA validity Value=365Type=DAYS apipassthrough Extensions={ExtendedKeyUsage=[{ExtendedKeyUsageType=EMAILPROTECTION}]KeyUsage={DigitalSignature=trueKeyEncipherment=true}SubjectAlternativeNames=[{Rfc822Name=johndoe@examplecom}]}

魔方加速器老版本

如果命令成功,将显示发行的证书的 ARN。

接下来,访问本篇文章的 检索证书 部分以获取 PEM 格式的证书及证书链。

使用 CSR passthrough 发行智能卡身份验证证书

使用以下命令创建私钥:

openssl genpkey algorithm RSA pkeyopt rsakeygenbits2048 out privatekeydemo2pem

建立一个名为 opensslcsrconf 的文件,以定义区别名称和请求的 CSR 扩展。

[ req ] defaultbits = 2048 prompt = no defaultmd = sha256 reqextensions = myreqext distinguishedname = dn

[ dn ] countryName = US stateOrProvinceName = VA localityName = Test City organizationName = Test Organization Inc organizationalUnitName = Test Organization Unit commonName = johndoe

[ myreqext ] keyUsage = critical digitalSignature extendedKeyUsage = clientAuth msSmartcardLogin subjectAltName = otherNamemsUPNUTF8johndoe@examplecom

建立 CSR,定义配置文件:

openssl req new key privatekeydemo2pem out csrdemo2csr config opensslcsrconf

可选使用以下命令解码 CSR,以确保其包含所需的信息:

openssl req in csrdemo2csr noout text

使用 issuecertificate 命令发行证书:

aws acmpca issuecertificate certificateauthorityarn arnawsacmpcauseast1ltaccountIDgtcertificateauthority/11111111111111111111111111111111 csr fileb//csrdemo2csr templatearn arnawsacmpcatemplate/BlankEndEntityCertificateCSRPassthrough/V1 signingalgorithm SHA256WITHRSA validity Value=365Type=DAYS

若命令成功,将显示发行的证书的 ARN。

检索证书

使用 API passthrough 或 CSR passthrough 发行证书后,您可以检索 PEM 格式的证书材料。使用以下命令检索证书及证书链:

aws acmpca getcertificate certificateauthorityarn arnawsacmpcauseast1ltaccountIDgtcertificateauthority/11111111111111111111111111111111 certificatearn arnawsacmpcauseast1ltaccountIDgtcertificateauthority/11111111111111111111111111111111/certificate/123465789123456789 output text

之后,您可以使用 openssl x509 命令解码证书,以查看证书的详细信息。

openssl x509 in certfilepem noout text

结论

在 AWS Private CA 中,您可以通过定义证书的用途来实现可追溯性和最小权限的安全性。Key Usage 和 Extended Key Usage 值定义了证书的用途,许多证书用例需要结合这两种值,这些无法通过基准证书模板定义。发行特定用例的证书,您可以使用空白证书模板与 IssueCertificate API 结合使用。

若您对本篇文章有任何意见,请在下方的 评论 部分中发表。若您对本篇文章有任何疑问,请 联系 AWS 支持。

想要获取更多 AWS 安全新闻?请关注我们的 Twitter。