概要
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で通信する場合
- リスナー設定にHTTPS(443)→HTTP(80)の設定を追加し、証明書欄にて「AWS 証明書マネージャ (ACM) から、既存の証明書を選択する」を選び、さきほど作成した証明書を設定。
※なお、Webサーバ側にはhttpで飛んで行くので、ApacheにSSL関連の設定は不要。
ELB側でhttpsでアクセスを受け、各サーバとhttpsで通信する場合
- HTTPS(443)→HTTP(443)の設定を追加し、証明書欄にて「AWS 証明書マネージャ (ACM) から、既存の証明書を選択する」を選び、さきほど作成した証明書を設定。
※なお、Webサーバ側にはhttpsで飛んで行くので、ApacheにSSL関連の設定が必要。
おわりに
AWSでSSL証明書が無料で、しかも自動更新で使えると聞いて、最初は「え!何かの罠なの!?」と疑ってしまいましたw
これでオレオレ証明書とか面倒くさいことしなくて済む…!
ありがたやありがたや…。
参考にしたURL
[ACM]AWSの無料SSL証明書サービスCertificate Manager について調べてみた | Developers.IO
ありがとうございました!