如何上传 SSL 证书并将其导入 AWS Identity and Access Management (IAM)?

上次更新时间:2020 年 8 月 12 日

如何上传 SSL 证书并将其导入 AWS Identity and Access Management (IAM)?

简短描述

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

在将 SSL 证书导入 IAM 之前,必须满足以下条件:

  • 证书在上传时必须有效。您不能在有效期开始之前或过期之后上传证书。
  • 证书、私钥和证书链必须采用 PEM 编码。有关更多信息,请参阅使用服务器证书中的示例 PEM 编码的证书链部分。

确认您的证书符合这些条件后,请确保证书链的顺序正确,然后上传证书。

解决方法

确认证书链的顺序正确

证书链必须以您的证书颁发机构 (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 invalid 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-----

注意:确保证书首尾无空格。

上传证书

通过运行以下命令上传证书:

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

注意:将文件名和 ExampleCertificate 替换为您上传的文件和证书的名称。有关详细信息,请参阅 upload-server-certificate

上传的证书后,命令将返回关于上传的证书的元数据,包括证书的 Amazon 资源名称 (ARN)、友好名称、标识符 (ID) 和过期日期。您可以通过运行以下命令查看上传的证书:

aws iam list-server-certificates

注意:如果您上传要用于 Amazon CloudFront 的服务器证书,必须使用 --path 指定路径。路径必须以 /cloudfront 开头,并且路径结尾必须包含反斜杠,例如 /cloudfront/test/。有关更多信息,请参阅如何排查与在我的 CloudFront 分配上使用自定义 SSL 证书有关的问题?


这篇文章对您有帮助吗?


您是否需要账单或技术支持?