颁发私有终端实体证书 - Amazon Private Certificate Authority
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

颁发私有终端实体证书

有了私有 CA 后,您可以向 Amazon Certificate Manager (ACM) 或申请私有终端实体证书。 Amazon 私有 CA下表对两项服务的功能进行了比较。

能力

ACM

Amazon 私有 CA

颁发终端实体证书

✓(使用 RequestCertificate 或控制台)

✓(使用 IssueCertificate

与负载均衡器和面向互联网的服务 Amazon 关联

不支持

托管证书续订 通过 ACM 间接支持

控制台支持

不支持

API 支持

CLI 支持

Amazon 私有 CA 创建证书时,它遵循指定证书类型和路径长度的模板。如果未向创建证书的 API 或 CLI 语句提供模板 ARN,则默认情况下会EndEntityCertificate应用 /V1 模板。有关可用证书模板的更多信息,请参阅 使用 Amazon Private CA 证书模板

虽然 ACM 证书是围绕公共信任设计的,但 Amazon 私有 CA 可以满足您的私有 PKI 的需求。因此,您可以使用 Amazon 私有 CA API 和 CLI 以 ACM 不允许的方式配置证书。这些功能包括:

使用创建私有 TLS 证书后 Amazon 私有 CA,您可以将其导入 ACM 并与支持的 Amazon 服务一起使用。

注意

使用以下步骤、使用issue-certificate命令或 IssueCertificateAPI 操作创建的证书不能直接导出以供外部使用 Amazon。但是,您可以使用私有 CA 签署通过 ACM 颁发的证书,并且这些证书可以与其密钥一起导出。有关请求 ACM 证书的更多信息,请参阅《ACM 用户指南》中的请求私有证书导出私有证书

颁发标准证书 (Amazon CLI)

您可以使用 Amazon 私有 CA CLI 命令 issue-certificate 或 API 操作IssueCertificate来请求最终实体证书。此命令需要要用于颁发证书的私有 CA 的 Amazon 资源名称 (ARN)。您还必须使用 OpenSSL 之类的程序生成证书签名请求(CSR)。

如果您使用 Amazon 私有 CA API 或 Amazon CLI 颁发私有证书,则证书处于非托管状态,这意味着您无法使用 ACM 控制台、ACM CLI 或 ACM API 来查看或导出证书,也不会自动续订证书。但是,您可以使用 PCA get-certificate 命令来检索证书详细信息,如果您拥有 CA,则可以创建审计报告

创建证书时的注意事项

  • 为满足 RFC 5280 要求,您提供的域名(技术术语为公用名)长度不能超过 64 个八位字节(字符),包括句点。要添加更长的域名,请在“使用者备用名称”字段中指定该名称,该字段支持长度不超过 253 个八位字节的名称。

  • 如果您使用的是 1.6.3 或更高 Amazon CLI 版本,请在指定 base64 编码的输入文件fileb://时使用前缀,例如。 CSRs这样可以确保正确 Amazon 私有 CA 解析数据。

以下 OpenSSL 命令为证书生成 CSR 和私有密钥:

$ openssl req -out csr.pem -new -newkey rsa:2048 -nodes -keyout private-key.pem

您可以按如下方式检查 CSR 的内容:

$ openssl req -in csr.pem -text -noout

生成的输出应与以下简短示例类似:

Certificate Request: Data: Version: 0 (0x0) Subject: C=US, O=Big Org, CN=example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:ca:85:f4:3a:b7:5f:e2:66:be:fc:d8:97:65:3d: a4:3d:30:c6:02:0a:9e:1c:ca:bb:15:63:ca:22:81: 00:e1:a9:c0:69:64:75:57:56:53:a1:99:ee:e1:cd: ... aa:38:73:ff:3d:b7:00:74:82:8e:4a:5d:da:5f:79: 5a:89:52:e7:de:68:95:e0:16:9b:47:2d:57:49:2d: 9b:41:53:e2:7f:e1:bd:95:bf:eb:b3:a3:72:d6:a4: d3:63 Exponent: 65537 (0x10001) Attributes: a0:00 Signature Algorithm: sha256WithRSAEncryption 74:18:26:72:33:be:ef:ae:1d:1e:ff:15:e5:28:db:c1:e0:80: 42:2c:82:5a:34:aa:1a:70:df:fa:4f:19:e2:5a:0e:33:38:af: 21:aa:14:b4:85:35:9c:dd:73:98:1c:b7:ce:f3:ff:43:aa:11: .... 3c:b2:62:94:ad:94:11:55:c2:43:e0:5f:3b:39:d3:a6:4b:47: 09:6b:9d:6b:9b:95:15:10:25:be:8b:5c:cc:f1:ff:7b:26:6b: fa:81:df:e4:92:e5:3c:e5:7f:0e:d8:d9:6f:c5:a6:67:fb:2b: 0b:53:e5:22

以下命令创建证书。由于未指定模板,因此默认情况下会颁发基本终端实体证书。

$ aws acm-pca issue-certificate \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566 \ --csr fileb://csr.pem \ --signing-algorithm "SHA256WITHRSA" \ --validity Value=365,Type="DAYS"

将返回已颁发证书的 ARN:

{ "CertificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID" }
注意

Amazon 私有 CA 收到命令后,会立即返回带有序列号的 ARN。issue-certificate但是,证书处理是异步进行的,仍然可能失败。如果发生这种情况,使用新 ARN 的 get-certificate 命令也会失败。

使用 APIPassthrough 模板颁发带有自定义主题名称的证书

在此示例中,颁发的证书包含自定义使用者名称元素。除了提供像中的那样的 CSR 之外颁发标准证书 (Amazon CLI),您还可以向issue-certificate命令传递两个额外的参数: APIPassthrough 模板的 ARN 和指定自定义属性及其对象标识符的 JSON 配置文件()OIDs。您不能与一起使用CustomAttributes。但是,您可以通过标准版 OIDs 作为其StandardAttributes中的一部分CustomAttributes。下表 OIDs 列出了默认主题名称(来自 RFC 4519全局 OID 参考数据库的信息):

使用者名称

缩写

对象 ID

countryName

c

2.5.4.6

commonName

cn

2.5.4.3

dnQualifier [可分辨名称限定符]

2.5.4.46

generationQualifier

2.5.4.44

givenName

2.5.4.42

initials

2.5.4.43

locality

l

2.5.4.7

organizationName

o

2.5.4.10

organizationalUnitName

ou

2.5.4.11

pseudonym

2.5.4.65

serialNumber

2.5.4.5

st [状态]

2.5.4.8

surname

sn

2.5.4.4

删除实例快照

2.5.4.12

domainComponent

dc

0.9.2342.19200300.100.1.25

userid

0.9.2342.19200300.100.1.1

示例配置文件 api_passthrough_config.txt 包含以下代码:

{ "Subject": { "CustomAttributes": [ { "ObjectIdentifier": "2.5.4.6", "Value": "US" }, { "ObjectIdentifier": "1.3.6.1.4.1.37244.1.1", "Value": "BCDABCDA12341234" }, { "ObjectIdentifier": "1.3.6.1.4.1.37244.1.5", "Value": "CDABCDAB12341234" } ] } }

使用以下命令颁发证书:

$ aws acm-pca issue-certificate \ --validity Type=DAYS,Value=10 --signing-algorithm "SHA256WITHRSA" \ --csr fileb://csr.pem \ --api-passthrough file://api_passthrough_config.txt \ --template-arn arn:aws:acm-pca:::template/BlankEndEntityCertificate_APIPassthrough/V1 \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566

将返回已颁发证书的 ARN:

{ "CertificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID" }

按如下方式在本地检索证书:

$ aws acm-pca get-certificate \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566 \ --certificate-arn arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID | \ jq -r .'Certificate' > cert.pem

您可以使用 OpenSSL 检查证书的内容:

$ openssl x509 -in cert.pem -text -noout
注意

也可以创建一个私有 CA,将自定义属性传递给它颁发的每个证书。

使用 APIPassthrough 模板颁发带有自定义扩展名的证书

在此示例中,颁发的证书包含自定义扩展。为此,您需要向issue-certificate命令传递三个参数: APIPassthrough 模板的 ARN、指定自定义扩展的 JSON 配置文件,以及如中所示的 CSR。颁发标准证书 (Amazon CLI)

示例配置文件 api_passthrough_config.txt 包含以下代码:

{ "Extensions": { "CustomExtensions": [ { "ObjectIdentifier": "2.5.29.30", "Value": "MBWgEzARgg8ucGVybWl0dGVkLnRlc3Q=", "Critical": true } ] } }

自定义证书的颁发方式如下:

$ aws acm-pca issue-certificate \ --validity Type=DAYS,Value=10 --signing-algorithm "SHA256WITHRSA" \ --csr fileb://csr.pem \ --api-passthrough file://api_passthrough_config.txt \ --template-arn arn:aws:acm-pca:::template/EndEntityCertificate_APIPassthrough/V1 \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566

将返回已颁发证书的 ARN:

{ "CertificateArn":"arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID" }

按如下方式在本地检索证书:

$ aws acm-pca get-certificate \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:111122223333:certificate-authority/11223344-1234-1122-2233-112233445566 \ --certificate-arn arn:aws:acm-pca:region:account:certificate-authority/CA_ID/certificate/certificate_ID | \ jq -r .'Certificate' > cert.pem

您可以使用 OpenSSL 检查证书的内容:

$ openssl x509 -in cert.pem -text -noout