如何上传 SSL 证书并将其导入 IAM?

2 分钟阅读
0

我想上传一个 SSL 证书并将其导入 AWS Identity and Access Management (IAM)。

简短描述

最佳做法是将 SSL 证书上传到 AWS Certificate Manager (ACM)。如果您使用的是当前不受 ACM 或其关联的 AWS 资源支持的证书算法和密钥大小,则您还可以使用 AWS 命令行界面 (AWS CLI) 将 SSL 证书上传到 IAM。

在将 SSL 证书导入 IAM 之前:

  • 该证书在上传时必须处于有效状态。在证书有效期开始之前或到期之后,均无法上传证书。
  • 证书、私钥和证书链必须采用 PEM 编码。有关详细信息,请参阅使用服务器证书中的“PEM 编码的证书链示例”部分。

确认您的证书满足条件后,请确保证书链的顺序正确,然后上传证书。

解决方法

确认证书链的顺序正确

**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

证书链必须以证书颁发机构 (CA) 生成的证书开头,并以 CA 的根证书结尾。

**注意:**如果证书链的顺序不正确,您可能会收到以下错误消息: "An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to validate certificate chain.The certificate chain must start with the immediate signing certificate, followed by any intermediaries in order.The index within the chain of the non-valid certificate is: -1"

PEM 编码的证书链必须以“-----BEGIN CERTIFICATE-----”开头,以“-----END CERTIFICATE-----”结尾,类似于以下:

-----BEGIN CERTIFICATE-----
Base64-encoded Intermediate certificate 2
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Base64-encoded Intermediate certificate 1
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Optional: Base64-encoded Root certificate
-----END CERTIFICATE-----

**注意:**确保证书前后没有空格,且除了 BEGINEND 块外不包含前缀或后缀。

PEM 编码的密钥必须使用以下格式,以避免“MalformedCertificate: Unable to parse private key”(MalformedCertificate:无法解析私钥)错误消息:

-----BEGIN RSA PRIVATE KEY-----
Base64-encoded private key
-----END RSA PRIVATE KEY-----

上传证书

通过运行 AWS CLI 命令 upload-server-certificate 上传证书,如下所示:

$ aws iam upload-server-certificate --server-certificate-name YourCertificate --certificate-body file://Certificate.pem --certificate-chain file://CertificateChain.pem --private-key file://PrivateKey.pem

注意:

  • 将文件名和 YourCertificate 替换为您上传的文件和证书的名称。
  • 您必须在 API 请求的 certificate-body, certificate-chain 和 private-key 参数中指定“file://”前缀。否则,请求将失败,并显示“MalformedCertificate: Unknown”(MalformedCertificate:未知)错误消息。

证书上传后,AWS 命令 upload-server-certificate 将返回上传的证书的元数据,包括证书的 Amazon 资源名称 (ARN)、友好名称、标识符 (ID) 和到期日期。

要查看上传的证书,请运行 AWS CLI 命令 list-server-certificates

aws iam list-server-certificates

**注意:**如果您上传服务器证书以供 Amazon CloudFront 使用,则必须使用 --path 指定路径。路径必须以 /cloudfront 开头,且路径必须包含一个尾部斜杠,例如 /cloudfront/test/。有关详细信息,请参阅如何解决在我的 CloudFront 分配中使用自定义 SSL 证书时遇到的问题?

要删除证书,请运行类似于以下的 AWS CLI 命令 delete-server-certificate

$ aws iam delete-server-certificate --server-certificate-name YourCertificate

相关信息

与 ACM 集成的服务

适用于导入的证书和密钥格式

AWS 官方
AWS 官方已更新 5 个月前