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

上次更新日期:2022 年 3 月 14 日

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

简短描述

最佳做法是将 SSL 证书上载到 AWS Certificate Manager (ACM)。如果您使用的是 ACM 或关联的 AWS 资源当前不支持的证书算法和密钥大小,则您还可以使用 AWS Command Line Interface (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" 错误消息:

-----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" 错误消息。

上载证书之后,AWS 命令upload-server-certificate 将返回关于上载的证书的元数据,包括证书的 Amazon Resource Name (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

这篇文章对您有帮助吗?


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