Posted at

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

ありがとうございました!