【目指せ最安Webサイト】AWS+LightSailのディストリビューションを使ってWordPressをSSL化する方法。注意点・ACMの良い所

WordPressのSSL化

世界最安のWebサイトを使ろうと、AWSを使ってWordPressを構築しています。そのときにお手軽なのがLightSailです。LightSailを使ってWordPressを構築した後、「ディストリビューション」という機能を使ってサイトをSSL化します。

AWS・LightSailのディストリビューションとは

AWS・LightSailのディストリビューションを使って、WordPressをSSL化します。っとその前にAWSのディストリビューションの説明です。

AWS・ディストリビューションとは・・・

AWSでは、「Amazon CloudFront」というサービス名で、高速コンテンツ配信ネットワークサービスを提供しています。

高速化には、Webサーバーのキャッシュを持つことで実現します。

AWSのLightSailでは、このAmazon CloudFrontと同じ機能を「ディストリビューション」という名前で使うことができます。

AWS・LightSailのディストリビューションでサイトをSSL化する手順

それでは、ざっくりとAWS・LightSailのディストリビューションを使ってWordPressインスタンスをSSL化する手順を書きます。

  1. ディストリビューションを作成する
  2. Amazon Certificate Managerを使ってSSL証明書を作成する
  3. ディストリビューションに「2」で作成したSSL証明書をくっつける(設定する)
  4. SSL証明書のついたディストリビューション(「3」)で出来たCNAMEレコードをDNSに追加する
  5. 出来たサイトをSSHでテストする
  6. 出来上がり!

以上、1~6までの手順と、注意点を記載していきます。いやー、まいった、まいった。なかなかうまくいきませんでしたよー!

1、LightSailのディストリビューションを作成する

AWS LightSailのページで、「ディストリビューションを作成する」を選ぶ。

「オリジン」には作成しているWordPressのインスタンスを選択し、その他はデフォルトで作成を進めます。

ディストリビューション作成時の注意点

はい、そして作成時の注意点です。ここでわたくし、はまりましたw 注意点は2点ありますので参考にされてください

ディストリビューションの名前は一意にする「ドメイン名が良い」

ディストリビューション作成時の注意点「ディストリビューション名は『ドメイン名』」にします。

こっそりと「Lightsailリソース名は一意であることが必要です」と書いてあります。ここの名前を適当につけていると後でスムーズにいきませんので、注意しましょう。

私は画面にあるように、このサイトのサブドメイン名をディストリビューション名にしています。

オリジンプロトコルポリシーは「http」にする

続いてこちら。2番目はオリジンプロトコルポリシーを「http」にします。ディストリビューションがhttpで受けたリクエストを、httpsに変更する、という機能を持つようでうs。

2、Amazon Certificate ManagerでSSL証明書を作成する

続いて、Amazonマネジメントコンソールを開いて、Cetiricate Managerを開きます。

AWSマネジメントコンソールで、Certificate Managerを検索

Certificate Managerを起動したら、「証明書のプロビジョニング」か「プライベート認証機関」を選ぶ画面が出てきます。「証明書のプロビジョニング」を選びます。

証明書のプロビジョニングのいう通りに進めていきます。簡単、簡単。

証明書のリクエストをする
ドメイン等必要な情報を記載
DNSのSSL化として作る

タグの追加では、次のような値を入れます。

  • Admin(管理者)
  • Purpose(目的)
  • Protocol
  • Registar(ドメインの登録先)

で、どんどん進めていくと、証明書のリクエストが完了し、Certificate Manager上にSSL証明書ができます。

Amazon Certificate Managerを使うと良いところ

証明書の面倒くさいところは、1年間たつと更新作業が発生するところです。これ意外に忘れてたりとか、サーバーを止めないといけなかったりとか、引継ぎができてなかったりとか、前任者が丸投げとか・・・まあまあな手間です。

Amazon Certificate Manager(ACM)を使うと証明書は自動的に更新されます。条件はありますけどね。マネージドサービスっていうのですかね?

自動更新の条件
  • AWSの機能 (Elastic Load Balancing や CloudFront など) を使っていること
  • ACM RequestCertificate API を使って作ったプライベート証明書であること
  • AWS管理コンソールを使って作ったプライベート証明書であること

3、ディストリビューションにSSL証明書をつける

Certificate ManagerでSSLが作成できたので、ディストリビューションで作成したSSLを設定します。

LightSailのディストリビューションの「カスタムドメイン」のところで次のことをします。

  1. 証明書を作成する
  2. 証明書のリクエストがOKになれば、「カスタムドメイン」を有効にできるようになるので、有効にする。

まずは、カスタムドメインのタブで証明書をつけます。証明書をつけないとカスタムドメインが有効になりません。

証明書がOKになるまで、カスタムドメインを有効化できません。

「証明書を作成」リンクをクリックし、AWS Certificate Managerで作成した証明書名を入力します。そうすると、証明書を検証してくれて次のような画面になります。

レコードタイプの名前と、値は後でDNS登録するときに使いますよ。赤枠のところです。

4、DNSにレコードを追加する

証明書の検証が終了しましたら、LightSailで使っている「DNSゾーン」で「DNSレコード」を追加します。この時追加するレコードは、「3、ディストリビューションに証明書をつける」で出来た値をつけます。

上の画像の赤枠で示したところだよね!

サブドメインのところに「名前」を入れて、マップ先に「値」を入れます。

5、出来たサイトをSSHをテストする

出来た!!これで完成です。WebブラウザでサイトのURLを入れる前に、WordPressのインスタンスSSHを使ってcurlコマンドを打ってみましょう。「-I」オプションでページの情報のみ表示させます。

curlコマンド

curl -I [URL]

200番が表示されて、正常に表示されることが確認できました。LightSailのディストリビューションの元になっているAmazon CloudFrontの名前も表示されていますね。LightSailでもAmazon CloudFrontが使えるのですよ!

ちなみに、ここでhttpでリクエストすると、移動したよーん、というメッセージが出ます。LightSailのディストリビューションがhttpリクエストを、httpsに変換しているのでしょうね。

ディストリビューション作成時のオリジンプロトコルを「https」で作成してしまうと、503BadGatewayが出力されます。これはまりました・・・・。上にも書きましたが、オリジンプロトコルはhttpsじゃなくて、httpを指定する必要があります。

まとめ・これでWordPressサイトをSSL化できました。しかも最安で。

わたくし、ディストリビューションのことに気が付かず、アクセス数1~2/1日にも関わらずロードバランサーでSSLを実現していましたw

今回、ディストリビューションに変更したことで、サーバー代世界最安値でWordPressを動かすことができました。いやー、よかった、よかった。世の中知らないことばかりですね・・・。