メニュー
AWS Identity and Access Management
ユーザーガイド

サーバー証明書の使用

ウェブサイトまたは AWS のアプリケーションへの HTTPS 接続を有効にするには、SSL/TLS サーバー証明書が必要です。AWS Certificate Manager (ACM) から提供されたサーバー証明書、または外部プロバイダーから入手したサーバー証明書を使用できます。

ACM を使用してサーバー証明書のプロビジョニング、管理、デプロイを行うことをお勧めします。ACM を使用すると、証明書をリクエストし、それを AWS リソースにデプロイして、証明書の更新を ACM で処理できます。ACM で提供される証明書は無料です。ACM の使用方法の詳細については、AWS Certificate Manager ユーザーガイドを参照してください。

外部プロバイダーから入手した証明書をウェブサイトまたは AWS のアプリケーションで使用するには、証明書を IAM にアップロードするか、ACM にインポートする必要があります。証明書を ACM にインポートすることをお勧めします。ACM を使用してすべての AWS サーバー証明書 (ACM によって提供されたもの、および AWS で使用するために外部プロバイダーから入手したもの) を管理できます。ACM に保存された証明書を、IAM に保存された証明書をサポートする同じ AWS サービス (Elastic Load Balancing、Amazon CloudFront、および AWS Elastic Beanstalk) に使用できます。ACM を使用すると、1 つの証明書をこれらの複数のサービスに同時に使用できます。AWS マネジメントコンソールを使用して、証明書を ACM にインポートできます。これは IAM で行うことはできません。

ACM への証明書のインポートに関する詳細については、AWS Certificate Manager ユーザーガイドの「証明書のインポート」を参照してください。

IAM への証明書のアップロードの詳細については、次のトピックを参照してください。

サーバー証明書のアップロード (IAM API)

IAM にサーバー証明書をアップロードするには、証明書と対応するプライベートキーを提供する必要があります。証明書が自己署名されていない場合、証明書チェーンも提供する必要があります (自己署名証明書をアップロードするときに証明書チェーンは必要ありません)。証明書をアップロードする前に、これらの項目がすべてあり、以下の条件を満たしていることを確認します。

  • 証明書はアップロード時に有効である必要があります。有効期間の開始 (証明書の NotBefore 日付) 前、または有効期間の終了 (証明書の NotAfter 日) 後に証明書をアップロードすることはできません。

  • プライベートキーは非暗号化される必要があります。パスワードやパスフレーズで保護されたプライベートキーをアップロードすることはできません。暗号化されたプライベートキーの復号のヘルプについては、「トラブルシューティング」を参照してください。

  • 証明書、プライベートキー、および証明書チェーンはすべて PEM エンコードされる必要があります。これらの項目の PEM 形式への変換のヘルプについては、「トラブルシューティング」を参照してください。

IAM API を使用して証明書をアップロードするには、UploadServerCertificate リクエストを送信します。次の例では、AWS Command Line Interface (AWS CLI) を使用してこの操作を行う方法を示します。例では、次のように想定しています。

  • PEM エンコードされた証明書は、Certificate.pem というファイルに保存されます。

  • PEM エンコードされた証明書チェーンは、CertificateChain.pem というファイルに保存されます。

  • PEM エンコードされ、非暗号化されたプライベートキーは、PrivateKey.pem というファイルに保存されます。

次のサンプルコマンドを使用するには、ファイル名を独自のファイル名に置き換え、ExampleCertificate をアップロードされた証明書の名前に置き換えます。1 つの連続した行にコマンドを入力します。次の例では、読みやすくするために改行とスペースを追加しています。

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

前のコマンドが成功すると、Amazon リソースネーム (ARN)、わかりやすい名前、識別子 (ID)、有効期限日などを含む、アップロードされた証明書に関するメタデータを返します。

注記

Amazon CloudFront で使用することを目的としてサーバー証明書をアップロードする場合、--path オプションを使用してパスを指定する必要があります。パスの先頭に /cloudfront を含め、末尾にスラッシュを含める必要があります(例: /cloudfront/test/)。

AWS Tools for Windows PowerShell を使用して証明書をアップロードするには、Publish-IAMServerCertificate を使用します。

サーバー証明書の取得 (IAM API)

IAM API を使用して証明書を取得するには、GetServerCertificate リクエストを送信します。次の例では、AWS CLI を使用してこの操作を行う方法を示します。ExampleCertificate を、取得する証明書の名前と置き換えます。

Copy
$ aws iam get-server-certificate --server-certificate-name ExampleCertificate

前のコマンドが成功した場合、証明書、証明書チェーン (アップロードされた場合)、および証明書に関するメタデータを返します。

注記

アップロード後に IAM からプライベートキーをダウンロードまたは取得することはできません。

AWS Tools for Windows PowerShell を使用して証明書を取得するには、Get-IAMServerCertificate を使用します。

サーバー証明書の一覧表示 (IAM API)

IAM API を使用して、アップロードされたサーバー証明書を一覧表示するには、ListServerCertificates リクエストを送信します。次の例では、AWS CLI を使用してこの操作を行う方法を示します。

Copy
$ aws iam list-server-certificates

前のコマンドが成功した場合、各証明書に関するメタデータが含まれた一覧を返します。

AWS Tools for Windows PowerShell を使用して、アップロードしたサーバー証明書を一覧表示するには、Get-IAMServerCertificates を使用します。

サーバー証明書の名前変更またはパスの更新 (IAM API)

IAM API を使用してサーバー証明書の名前を変更するか、パスを更新するには、UpdateServerCertificate リクエストを送信します。次の例では、AWS CLI を使用してこの操作を行う方法を示します。

以下のサンプルコマンドを使用するには、古い証明書の名前、新しい証明書の名前、および証明書のパスを置き換え、1 つの連続した行にコマンドを入力します。次の例では、読みやすくするために改行とスペースを追加しています。

Copy
$ aws iam update-server-certificate --server-certificate-name ExampleCertificate --new-server-certificate-name CloudFrontCertificate --new-path /cloudfront/

前のコマンドが成功した場合、出力を返しません。

AWS Tools for Windows PowerShell を使用してサーバー証明書の名前を変更するか、パスを更新するには、Update-IAMServerCertificate を使用します。

サーバー証明書の削除 (IAM API)

IAM API を使用してサーバー証明書を削除するには、DeleteServerCertificate リクエストを送信します。次の例では、AWS CLI を使用してこの操作を行う方法を示します。

次のサンプルコマンドを使用するには、ExampleCertificate を、削除する証明書の名前に置き換えます。

Copy
$ aws iam delete-server-certificate --server-certificate-name ExampleCertificate

前のコマンドが成功した場合、出力を返しません。

AWS Tools for Windows PowerShell を使用してサーバー証明書を削除するには、Remove-IAMServerCertificate を使用します。

トラブルシューティング

証明書を IAM にアップロードする前に、証明書、プライベートキー、および証明書チェーンがすべて PEM エンコードされていることを確認する必要があります。また、プライベートキーは非暗号化されていることも確認する必要があります。以下の例を参照してください。

例 PEM エンコードされた証明書

Copy
-----BEGIN CERTIFICATE----- Base64-encoded certificate -----END CERTIFICATE-----

例 PEM エンコードされ、非暗号化されたプライベートキー

Copy
-----BEGIN RSA PRIVATE KEY----- Base64-encoded private key -----END RSA PRIVATE KEY-----

例 PEM エンコードされた証明書チェーン

証明書チェーンには 1 つまたは複数の証明書が含まれます。次の例には 3 つの証明書が含まれていますが、証明書チェーンに含まれている証明書はそれ以上またはそれ以下である可能性があります。

Copy
-----BEGIN CERTIFICATE----- Base64-encoded certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Base64-encoded certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Base64-encoded certificate -----END CERTIFICATE-----

これらの項目が IAM へのアップロードに適切な形式でない場合は、OpenSSL を使用して適切な形式に変換できます。

DER から PEM に証明書または証明書チェーンを変換するには

以下の例のように、OpenSSL x509 コマンドを使用します。次のサンプルコマンドで、Certificate.der を、DER エンコードされた証明書を含むファイルの名前に置き換えます。Certificate.pem を、出力ファイルの目的の名前で置き換え、PEM エンコードされた証明書を含めます。

Copy
$ openssl x509 -inform DER -in Certificate.der -outform PEM -out Certificate.pem

 

DER から PEM にプライベートキーを変換するには

以下の例のように、OpenSSL rsa コマンドを使用します。次のサンプルコマンドで、PrivateKey.der を、DER エンコードされたプライベートキーを含むファイルの名前に置き換えます。PrivateKey.pem を出力ファイルの目的の名前に置き換え、PEM エンコードされたプライベートキーを含めます。

Copy
$ openssl rsa -inform DER -in PrivateKey.der -outform PEM -out PrivateKey.pem

 

暗号化されたプライベートキーを復号するには (パスワードやパスフレーズを削除)

以下の例のように、OpenSSL rsa コマンドを使用します。次のサンプルコマンドを使用するには、EncryptedPrivateKey.pem を、暗号化されたプライベートキーを含むファイルの名前に置き換えます。PrivateKey.pem を出力ファイルの目的の名前に置き換え、PEM エンコードされ、非暗号化されたプライベートキーを含めます。

Copy
$ openssl rsa -in EncryptedPrivateKey.pem -out PrivateKey.pem

 

証明書バンドルを PKCS#12 (PFX) から PEM に変換するには

以下の例のように、OpenSSL pkcs12 コマンドを使用します。次のサンプルコマンドで、CertificateBundle.p12 を、PKCS#12 エンコードされた証明書バンドルを含むファイルの名前に置き換えます。CertificateBundle.pem を、出力ファイルの目的の名前で置き換え、PEM エンコードされた証明書バンドルを含めます。

Copy
$ openssl pkcs12 -in CertificateBundle.p12 -out CertificateBundle.pem -nodes

 

証明書バンドルを PKCS#7 から PEM に変換するには

以下の例のように、OpenSSL pkcs7 コマンドを使用します。次のサンプルコマンドで、CertificateBundle.p7b を、PKCS#7 エンコードされた証明書バンドルを含むファイルの名前に置き換えます。CertificateBundle.pem を、出力ファイルの目的の名前で置き換え、PEM エンコードされた証明書バンドルを含めます。

Copy
$ openssl pkcs7 -in CertificateBundle.p7b -print_certs -out CertificateBundle.pem