Elastic Load Balancing の SSL 証明書
フロントエンドリスナーに HTTPS または SSL を使用する場合、ロードバランサーに SSL 証明書をインストールする必要があります。バックエンドインスタンスにリクエストを送信する前に、ロードバランサーは証明書を使用して接続を終了し、クライアントからのリクエストを復号化します。
SSL プロトコルは、X.509 証明書 (SSL サーバー証明書) を使用して、クライアントとバックエンドアプリケーションの両方を認証します。X.509 証明書は、認証機関 (CA) によって発行された IDENTITY デジタル フォームで、識別情報、有効期間、パブリックキー、シリアルナンバー、発行者のデジタル署名が含まれます。
ロードバランサーに SSL 証明書をインストールする前に、証明書を作成し、CA によって署名された証明書を取得してから、SSL 証明書を管理する AWS Identity and Access Management (IAM) サービスを使用して証明書をアップロードする必要があります。デフォルトでは、IAM によって AWS アカウントごとに 20 のサーバー証明書が有効になります。この制限の詳細と、増加をリクエストする方法については、『IAM ユーザーガイド』の「IAM エンティティに関する制限事項」を参照してください。
各 SSL 証明書には有効期間があります。証明書は、有効期間が終了する前に差し替える必要があります。証明書を差し替えるには、新しい証明書を作成し、アップロードする必要があります。
SSL サーバー証明書を作成し、IAM にアップロードして、ロードバランサーにインストールするには、次のタスクを実行します。
前提条件: 証明書ツールをインストールする
サーバー証明書の作成には、SSL および TLS プロトコルをサポートするツールが必要です。
Linux
OpenSSL は広範な暗号機能を備えたオープンソースツールです。このツールがインストールされているかどうかを確認するには、openssl version を実行します。OpenSSL がインストールされていない場合は、インストールする必要があります。詳細については、Linux ディストリビューションのドキュメントを参照してください。
Windows
使用できるツールには、IIS Manager、SelfSSL、OpenSSL、Windows PowerShell のコマンドレットなどがあります。これらのツールのいずれかがまだインストールされていない場合は、ツールを選択してインストールします。
サーバー証明書の作成
SSL サーバー証明書を作成するには、RSA プライベートキーを生成し、証明書署名リクエスト (CSR) を作成する必要があります。次に、認証機関 (CA) を利用してサーバー証明書に署名するか、CA が証明書に署名するのを待機しているときに SSL の実装をテストできるように、自己署名証明書を生成します。使用しているツールの指示に従って操作してください。この例では、OpenSSL での手順を示します。また、IIS Manager での手順に関する参照情報も示します。
OpenSSL を使用してサーバー証明書を作成するには
プライベートキーを作成し、安全な場所に保存します。プライベートキーを紛失した場合、そのキーを取得する方法がないためです。
プライベートキーは標準のキーアルゴリズムを使って作成されます。クライアントからロードバランサーに対する SSL 接続のネゴシエーションを行うときに使用する予定の暗号に基づいて、アルゴリズムを選択します。
RSA 方式の暗号
次の
genrsaコマンドを使用します。AWS では、1024 ビット、2048 ビット、4096 ビットの RSA キーをサポートしています。ただし、2048 ビットを指定することをお勧めします。openssl genrsa -outmy-private-key.pem 2048ECDHE-ECDSA 方式の暗号
次の
ecparamコマンドを使用します。openssl ecparam -name prime256v1 -outmy-private-key.pem -genkey次の
reqコマンドを使用して、CSR を作成します。openssl req -sha256 -new -keymy-private-key.pem -outcsr.pemコマンドはインタラクティブで実行され、以下の情報の入力が求められます。
- 国名
2 文字の ISO コード(国名コード)。たとえば、
USと指定します。- 州名
組織が配置されている州の正式名称。略名は使用しないでください。
- 都市
組織が配置されている都市。
- 組織名
組織の正式名称。
- 部門名
(オプション)製品名や部課名のような追加情報。
- 共通名
CNAME の完全修飾ドメイン名。この名前は、正確に一致する名前を指定する必要があります。たとえば、
www.mycompany.com、mycompany.com、または*.mycompany.comなどです。- E メールアドレス
サーバー管理者の E メールアドレスです。
CA を利用して証明書に署名することも、テスト目的で使用するための自己署名証明書を生成することもできます。
サーバー証明書に適用するために、CSR を CA に送信します。作成した CSR には、お客様を識別するための情報が含まれています。CA より追加で他の認証情報や識別の根拠となるような情報を求められる場合があります。CSR が受理されると、CA からパブリック(アイデンティティ)証明書が返されます。場合によっては、デジタル署名されたチェーン証明書が返されます。AWS が特定の CA を推奨することはありません。主な CA の一覧については、Third-Party Certificate Authorities を参照してください。
自己署名証明書を作成するには、次のコマンドを使用します。
openssl x509 -req -days 365 -incsr.pem -signkeymy-private-key.pem -outmy-certificate.pem
IIS Manager を使用してサーバー証明書を作成するには
IIS Manager を使用して証明書を作成する方法については、Microsoft TechNet ライブラリの「インターネット サーバー証明書を要求する」または「自己署名入りサーバー証明書を作成する」を参照してください。
署名証明書をアップロードする
通常、認証機関 (CA) は、パブリック証明書、1 つ以上の中間証明書、およびルート証明書を送信します。中間証明書とルート証明書は、1 つのバンドルされたファイルとして届く場合と、個々のファイルとして届く場合があります。ファイル名は、購入する SSL 証明書の種類および認証機関によって異なる可能性があります。パブリック証明書はドメイン固有ファイルです。
前提条件
プライベートキーが、SSL 接続のネゴシエーション時に使用する予定の暗号に基づいたアルゴリズムで作成されており、PEM 形式である。
RSA 方式の暗号
RSA 方式の暗号用に生成されたプライベートキーを変換するには、次のコマンドを使用します。
openssl rsa -inmy-private-key-outform PEMECDHE-ECDSA 方式の暗号
ECDHE-ECDSA 方式の暗号用に生成されたプライベートキーを変換するには、次のコマンドを使用します。
openssl ecparam -inmy-private-key-outform PEMプライベートキーはパスワードで暗号化できません。
CA からサーバー証明書を受け取ったとき、ファイルは、IAM で必要となる PEM 形式になっていない場合があります。PEM 形式の詳細については、「pem DESCRIPTION」を参照してください。
CA から受け取ったサーバー証明書を変換するには、次のコマンドを使用します。
openssl x509 -inform PEM -inmy-certificate証明書チェーンを変換するには、次のコマンドを使用します。
openssl x509 -inform PEM -inmy-certificate-chain
現在の日付が証明書の開始日と終了日の間にある。
パブリックおよびプライベートの証明書ファイルに、証明書が 1 つだけ含まれている。
プライベートキーが証明書のパブリックキーと一致している。
証明書チェーンには、ルート証明書につながる CA のすべての中間証明書が含まれている必要があり、また証明書チェーンはオプションで CA のルート証明書で終了できます。通常、中間証明書とルート証明書はどちらも、適切な順番に並べられたバンドルファイルとして CA によって提供されます。 中間証明書の順番は、CA によって文書化される必要があります。ルート証明書はオプションですが、これを含めることで、SSL Checker のようにチェーン全体にわたる信頼性の検証を実行できます。
証明書バンドルが提供されない、または必要な順番で提供されない場合、「RSA プライベートキーの例」で示されているように、中間証明書を使用して独自の証明書チェーンファイルを作成できます。
サーバー証明書のアップロード
PEM 形式の証明書ファイルが準備できたら、次の upload-server-certificate コマンドを使用してそれらのファイルをアップロードします。
aws iam upload-server-certificate --server-certificate-name my-server-cert
--certificate-body file://my-certificate.pem --private-key file://my-private-key.pem
--certificate-chain file://my-certificate-chain.pem自己署名証明書をアップロードする場合は、証明書チェーンを指定する必要はありません。
証明書をアップロードすると、IAM は証明書を検証します。エラーが発生した場合は、ファイルが前提条件を満たしているかどうかを確認してから、再度アップロードします。
IAM によって受け入れられるサーバー証明書、プライベートキー、証明書チェーンの例を次に示します。
サーバー証明書はお客様のパブリックキーおよび ID に関連付けられています。証明機関(CA)に CSR を送信すると、CA はサーバー証明書を返します。
-----BEGIN CERTIFICATE-----
MIIE+TCCA+GgAwIBAgIQU306HIX4KsioTW1s2A2krTANBgkqhkiG9w0BAQUFADCB
tTELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug
YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSoAYykwOTEvMC0GA1UEAxMm
VmVyaVNpZ24gQ2xhc3MgMyBTZWN1cmUgU2VydmVyIENBIC0gRzIwHhcNMTAxMDA4
MDAwMDAwWhcNMTMxMDA3MjM1OTU5WjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
V2FzaGluZ3RvbjEQMA4GA1UEBxQHU2VhdHRsZTEYMBYGA1UEChQPQW1hem9uLmNv
bSBJbmMuMRowGAYDVQQDFBFpYW0uYW1hem9uYXdzLmNvbTCBnzANBgkqhkiG9w0B
AQEFAAOBjQAwgYkCgYEA3Xb0EGea2dB8QGEUwLcEpwvGawEkUdLZmGL1rQJZdeeN
3vaF+ZTm8Qw5Adk2Gr/RwYXtpx04xvQXmNm+9YmksHmCZdruCrW1eN/P9wBfqMMZ
X964CjVov3NrF5AuxU8jgtw0yu//C3hWnOuIVGdg76626ggOoJSaj48R2n0MnVcC
AwEAAaOCAdEwggHNMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMEUGA1UdHwQ+MDww
OqA4oDaGNGh0dHA6Ly9TVlJTZWN1cmUtRzItY3JsLnZlcmlzaWduLmNvbS9TVlJT
ZWN1cmVHMi5jcmwwRAYDVR0gBD0wOzA5BgtghkgBhvhFAQcXAzAqMCgGCCsGAQUF
BwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5jb20vcnBhMB0GA1UdJQQWMBQGCCsG
AQUFBwMBBggrBgEFBQcDAjAfBgNVHSMEGDAWgBSl7wsRzsBBA6NKZZBIshzgVy19
RzB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLnZlcmlz
aWduLmNvbTBABggrBgEFBQcwAoY0aHR0cDovL1NWUlNlY3VyZS1HMi1haWEudmVy
aXNpZ24uY29tL1NWUlNlY3VyZUcyLmNlcjBuBggrBgEFBQcBDARiMGChXqBcMFow
WDBWFglpbWFnZS9naWYwITAfMAcGBSsOAwIaBBRLa7kolgYMu9BSOJsprEsHiyEF
GDAmFiRodHRwOi8vbG9nby52ZXJpc2lnbi5jb20vdnNsb2dvMS5naWYwDQYJKoZI
hvcNAQEFBQADggEBALpFBXeG782QsTtGwEE9zBcVCuKjrsl3dWK1dFiq3OP4y/Bi
ZBYEywBt8zNuYFUE25Ub/zmvmpe7p0G76tmQ8bRp/4qkJoiSesHJvFgJ1mksr3IQ
3gaE1aN2BSUIHxGLn9N4F09hYwwbeEZaCxfgBiLdEIodNwzcvGJ+2LlDWGJOGrNI
NM856xjqhJCPxYzk9buuCl1B4Kzu0CTbexz/iEgYV+DiuTxcfA4uhwMDSe0nynbn
1qiwRk450mCOnqH4ly4P4lXo02t4A/DI1I8ZNct/Qfl69a2Lf6vc9rF7BELT0e5Y
123RVWYBAZW00EXAMPLE456RVWYBAZW00EXAMPLE
-----END CERTIFICATE-----
プライベートキーによって、パブリックキーを使って暗号化されたメッセージを解読することができます。
-----BEGIN RSA PRIVATE KEY-----
MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
3rrszlaEXAMPLE=
-----END RSA PRIVATE KEY-----証明書チェーンによって、ブラウザは、信頼しているルート証明書への証明書チェーンを構築できます。その結果、ブラウザはあなたの証明書を暗黙的に信頼できます。
次の例に示すように、証明書チェーンには中間証明書とオプションでルート証明書を含めます。これらの証明書は、空白行なしに連続して含めます。ルート証明書を含める場合は、証明書チェーンの先頭は中間証明書で、末尾がルート証明書である必要があります。CA によって提供された中間証明書を使用します。信頼パスのチェーン内に存在しない中間証明書は含めないでください。
-----BEGIN CERTIFICATE-----
Intermediate certificate 2
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Intermediate certificate 1
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Optional: Root certificate
-----END CERTIFICATE-----サーバー証明書の確認
サーバー証明書のアップロードが完了すると、IAM に保存されている情報の検証を行うことができます。それぞれの証明書オブジェクトは、一意の Amazon Resource Name(ARN)および ID を持っています。
証明書オブジェクトの検証には、次の get-server-certificate コマンドを使用します。
aws iam get-server-certificate --server-certificate-name my-server-certificate以下に、応答の例を示します。最初の行はサーバー証明書の ARN で、2 行目は ID です。
arn:aws:iam::123456789012:server-certificate/my-server-certificate
ASCACexampleKEZUQ4Kロードバランサーへの SSL 証明書のインストール
SSL 証明書をインストールするには、「リスナーの設定」を参照してください。
SSL 証明書を更新するには、「ロードバランサーの SSL 証明書の更新」を参照してください。