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」(UploadServerCertificate オペレーションを呼び出している最中にエラーが発生しました (MalformedCertificate)。証明書チェーンを検証できません。証明書チェーンは直接のデジタル署名用証明書から始まり、その後に中間証明書が続きます。無効な証明書チェーン内のインデックスは -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
関連情報
サービスと AWS Certificate Manager の統合
インポートのための証明書とキー形式