AWS Identity and Access Management
ユーザーガイド

サーバー証明書の使用

ウェブサイトまたは AWS のアプリケーションへの HTTPS 接続を有効にするには、SSL/TLS サーバー証明書が必要です。AWS Certificate Manager (ACM) によってサポートされているリージョンの証明書では、ACM を使用して、サーバー証明書をプロビジョン、管理、およびデプロイすることをお勧めします。サポートされていないリージョンでは、IAM を Certificate Manager として使用する必要があります。ACM がサポートしているリージョンについては、『AWS General Reference』の「AWS Certificate Manager Certificate Manager のリージョンとエンドポイント」を参照してください。

ACM は、サーバー証明書をプロビジョン、管理、展開するための推奨ツールです。ACM を使用すると、証明書をリクエストしたり、既存の ACM または外部証明書を AWS リソースにデプロイしたりできます。ACM で提供された証明書は無料で自動的に更新されます。サポートされているリージョンでは、ACM を使用して、コンソールまたはプログラムでサーバー証明書を管理できます。ACM の使用方法の詳細については、「AWS Certificate Manager ユーザーガイド」を参照してください。ACM 証明書のリクエストの詳細については、『AWS Certificate Manager ユーザーガイド』の「パブリック証明書のリクエスト」または「プライベート証明書のリクエスト」を参照してください。ACM へのサードパーティー証明書のインポートの詳細については、『AWS Certificate Manager ユーザーガイド』の「証明書のインポート」を参照してください。

IAM は、ACM でサポートされていないリージョンで HTTPS 接続をサポートする必要がある場合にのみ、証明書マネージャとして使用します。IAM はプライベートキーを安全に暗号化し、暗号化されたバージョンを IAM SSL 証明書ストレージに保存します。IAM では、サーバー証明書をすべてのリージョンにデプロイできますが、証明書を AWS で使用するには、外部プロバイダーから取得する必要があります。ACM 証明書を IAM にアップロードすることはできません。また、IAM コンソールから証明書を管理することはできません。

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

サーバー証明書のアップロード (AWS 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 つの連続した行にコマンドを入力します。次の例では、読みやすくするために改行とスペースを追加しています。

$ 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 を使用します。

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

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

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

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

注記

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

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

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

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

$ aws iam list-server-certificates

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

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

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

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

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

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

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

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

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

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

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

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

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

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

トラブルシューティング

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

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

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

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

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

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

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

-----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 エンコードされた証明書を含めます。

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

 

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

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

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

 

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

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

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

 

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

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

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

 

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

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

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