我想上传一个 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-----
**注意:**确保证书前后没有空格,且除了 BEGIN 和 END 块外不包含前缀或后缀。
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 集成的服务
适用于导入的证书和密钥格式