【AWS】Lightsail(WordPress)をSSL化するために証明書を設定する

2018-11-14

どうやらLightsailのSSL化は2月13日頃にやっていたみたいだ…ブログに書いておこうと思ってキャプチャも取っている。大分忘れかけているけど、思い出しながら設定した内容を書いてみようと思います。(;´▽`A“

まずはロードバランサーを作成

SSL化じゃないんか━━(*´∀`)ノ━━い!

と言いたいところだけど、まずは「ロードバランサー」というのが何かを聞いてくれ。

下は単純な構成でのWebサイトへのアクセス。1台のサーバを建てて、そこに外部からの接続ができるようにしている例。

続いて、下は「ロードバランサー」を導入した場合。複数台のサーバで運営をしている場合、大量にアクセスが発生しても負荷がかかり過ぎないように、「ロードバランサー」が最初にアクセスを受け、複数あるサーバに均等にアクセスを振り分ける。

つまり、「ロードバランサー」というのは負荷分散の仕組みです。

SSL化じゃないんか━━(*´∀`)ノ━━い!

なるよね!そうなるよね!僕もそう思いました!

何故、ロードバランサーの作成からかというと、Amazonさんがこんな仕組みを2017年12月29日に提供始めたのです。

でも、理にかなってると思う。

ユーザが色々手を加えることができるサーバに証明書を配置するよりも、独立していてユーザが操作できないので、お互いに影響を与えないでユーザはサーバを変更できるし、Amazon側はユーザを意識せずにサービスの改善ができると思う。

ちなみに、費用かかります。($18/月)

現状では無料の証明書発行も出来るし、サーバサイドをいじれる人ならロードバランサーなくても無料で設定することは出来ると思います。僕は、以下の理由でロードバランサーを利用することにしました。

  • 証明書更新といった作業を自動化できる
  • 将来的にスケーリングする時に備えられる
  • 始まったばかりのサービスだから試してみたい

3つ挙げたけど一番大きいのは3つ目です(∩・∀・)∩

という事で、まずはロードバランサーを作成します。Lightsailへ移動して、「ネットワーキング」→「ロードバランサーの作成」を選択します。

 

下の方の「ロードバランサーの作成」を選択

作成を押した後の画面でターゲットインスタンスを選択します。今のところ、一つしかサーバ作ってないので選択できるのは一つだけです。

SSL証明書を作成する

インスタンスを選択した後は、上の「インバウンドトラフィック」を選択。まだこの時点では証明書がないので、「証明書の作成」を選択。

プライマリドメインには自分の持っているドメインを入力します。まだ、ドメインを取得していないようなら、こちらを参考にしてください。AWSで取得したドメインでなくても設定できると思います。

「証明書の名前」は別にドメイン名と一緒じゃなくても大丈夫だと思います。勝手に補完されたので特にこだわりないのでそのままです。代替ドメインはよくわからないので空っぽだよ(´・ω・`)

入力したら「作成」ボタンを押すと下の画面になります。

「検証が進行中…」とは出ているけど、このまま放置しても検証は完了しないです。以下をそれぞれ実施します。(リンク先はAmazonの原文説明ページ)

SSL/TLS 証明書を DNS 検証を使ってリクエストする

一つ前の画像で青枠で囲っている部分を使うので、別タブや別画面「DNSゾーン」を開きます。「ホーム」「ネットワーキング」から証明書を設定したい「DNSゾーン」を選択。

DNSレコードの「追加」で

  • タイプ:CNAME
  • サブドメイン:証明書の画面の「名前」をコピー&ペースト
  • 送信先ドメイン:証明書の画面の「値」をコピー&ペースト

これでここの設定は終わり。

Lightsailロードバランサを指すエイリアスレコードを追加する

続けてそのままDNSレコードの編集をします。

僕の場合はタイプ「A」の以前設定した静的IPアドレスを、先ほど作成したロードバランサーに変更します。

「Route 53」にも設定が必要なので、ロードバランサーに戻って上の方にある「DNS名」のアドレスをコピーします。

AWSのコンソールから「Route 53」のメニューを開いて、証明書を設定した対象のドメインを選択します。ドメインを選択したら、「Create Record Set」を選んで、右側の項目に以下の入力と選択をします。

  • Name:「www」を設定
  • Alias:「Yes」を選択
  • Alias Target:ロードバランサーの画面でコピーした「DNS名」を貼り付け

Lightsailロードバランサのヘルスチェックを設定

ここまでの設定だけでも証明書の認証は通るんだけど、ヘルスチェックの設定をちゃんとしておかないと、後々「ヘルスチェック:失敗」とかいう悲しい現象が発生します。

 

こんな風にね!(o^-・)b

 

…とならないように、「ヘルスチェックのカスタマイズ」を選択してヘルスチェック用のアドレスを設定しておきます。

とりあえず僕はわかりやすいように、「health.html」というアドレスを設定。これだけだと「health.html」なんてファイルはないので、サーバに接続してファイルを作成しておきます。

サーバへのアクセスは「インスタンス」の四角いマークをクリックするとコンソールが開きます。

特にファイルやフォルダの場所とか、サーバ内の設定を変更していなければ、同じ構成になっていると思うので、開いた画面でそのまま以下のコマンドを打てばファイルが作成されます。

touch apps/wordpress/htdocs/health.html

本当にファイルができたかはブラウザのURLに「http://静的IPアドレス/health.html」と入力してアクセスできれば大丈夫です。中身何もないので真っ白な画面になると思う。

証明書が検証されるまで待つ

全部の設定が終わってもすぐに証明書の検証はOKにならないと思うので、少し待ってください。僕は夜に設定したので、そのまま寝て朝起きたら証明書の検証が終わってました。

検証が終わっているのを確認したら、プロトコルのHTTPSのところで、証明書を選択します。

 

いやー長かった(;´▽`A“

これで、「https://yukiosugiyama.com」にアクセスできる!
やったー!ちゃんと「保護された通信」になってる(∩・∀・)∩

 

…まだ終わりじゃなかったんだな(。・ω・)ノ゙

続きは以下を見てね(o^-・)b