如何上载 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-----
**注意:**请确保证书没有前导或尾随空格,并且除了 BEGIN 和 END 数据块之外,不包含前缀或后缀。
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
相关信息
与 AWS Certificate Manager 集成的服务
证书和密钥的导入格式