AWS

AWSでSSL証明書を作ってELBに設定する

More than 1 year has passed since last update.

概要

AWSのCertificate ManagerでSSL証明書を作って、Elastic Load Balancing(ELB)に設定することで、証明書の費用が実質無料でセキュアなサイトが用意できます。
導入のお手軽さと費用を抑えられるメリットがあり、本番稼働環境は勿論、検証環境とかで一時的に検証したい時も便利ですね。

AWS公式のサービス説明ページにも詳しい説明がありますが、ざっくりとした仕様を以下にまとめます。(2016/11現在の情報です)

暗号化レベル

  • 鍵の暗号化方式:RSA
  • 鍵長:2048bit
  • ハッシュアルゴリズム:SHA256
  • 証明書の認証局(CA):Amazon

認証レベル

  • ドメイン認証(当該ドメインの管理者が発行していることを示す)

利用料

  • 無料(但しAWSのELBでの利用に限る)

期限・更新について

  • 証明書の有効期間は13ヶ月
  • 失効60日前に自動更新される

設定手順

では、実際にAWSでSSL証明書を作ってELBに設定していきます。

前提

  • ドメインが用意されていること
  • ドメインの管理者アドレスのメールを受信できること

AWSで証明書を作る

  • AWSマネジメントコンソールのサービス一覧ページで「Certificate Manager」と入力して「Certificate Manager」のページを表示。
    ※ELB作ってるリージョンと同じリージョンで証明書を作ってください。
     
  • 「ステップ1:ドメイン名の追加」画面でドメイン名を入力する。
    ※既に1つ以上の証明書が管理されている場合は、一覧ページの左上に「証明書のリクエスト」ボタンがあるのでクリックすると、「ステップ1:ドメイン名の追加」画面に飛びます。
     
  • 「確認とリクエスト」を行うと、入力したドメインの管理者アドレスにメールが飛ぶ。
     
  • 届いたメールのURLクリック 「Certificate approval for ドメイン名」のメールが来るので、メール内の「Amazon Certificate Approvals」をクリックして承認する。
     
  • Certificate Managerページの証明書一覧に証明書が作られる。
    種類:Amazon が発行 となっている。
    有効期間の終了時刻:13ヶ月後の日付が設定される。

ELBのリスナー設定に証明書を設定

ELBのリスナー設定を追加します。
※ここでは、既にHTTP(80)→HTTP(80)の設定があり、新たにHTTPS用の設定を追加する場合を例に取ります。

ELB側でhttpsでアクセスを受け、各サーバとhttpで通信する場合

2016-12-08_084344.png

  • リスナー設定にHTTPS(443)→HTTP(80)の設定を追加し、証明書欄にて「AWS 証明書マネージャ (ACM) から、既存の証明書を選択する」を選び、さきほど作成した証明書を設定。
    ※なお、Webサーバ側にはhttpで飛んで行くので、ApacheにSSL関連の設定は不要。
    2016-12-08_085910.png

ELB側でhttpsでアクセスを受け、各サーバとhttpsで通信する場合

2016-12-08_084352.png

  • HTTPS(443)→HTTP(443)の設定を追加し、証明書欄にて「AWS 証明書マネージャ (ACM) から、既存の証明書を選択する」を選び、さきほど作成した証明書を設定。
    ※なお、Webサーバ側にはhttpsで飛んで行くので、ApacheにSSL関連の設定が必要。
    2016-12-08_090103.png

おわりに

AWSでSSL証明書が無料で、しかも自動更新で使えると聞いて、最初は「え!何かの罠なの!?」と疑ってしまいましたw
これでオレオレ証明書とか面倒くさいことしなくて済む…!
ありがたやありがたや…。

参考にしたURL

[ACM]AWSの無料SSL証明書サービスCertificate Manager について調べてみた | Developers.IO
ありがとうございました!