AWS Lightsailを使ったwordpressブログのシステム構成

AWS

結構前の投稿で、サーバを移行したというお話をしたのですが、復習を兼ねてちゃんとブログを書こうと思います。もともとはサーバをレンタルし、その中にwordpressをインストールし、SSL化して(やり方忘れた)、ドメインはお名前.comで払い出すという方法を取っていました。まぁ対してデメリットはなかったのですが、AWSの勉強したいなと思い、最初はEC2を考えたのですが、普通に料金が高かったです。なので、いろいろ探したところ、AWS Lightsailをいうサービスを見つけたので、こちらを利用しています。ただ、LightsailのインスタンスにAWS ACMで払い出した証明書を差し込めなかったため、証明書の設定だけは少し苦労しました・・・。

AWS Lightsail とは

AWSが提供しているVPS(仮想プライベートサーバー)サービスです。EC2だと色々な関連するサービスの知識が必要になります(VPC?サブネット?AMI?・・・等)。一方、Lightsailはそれらがパッケージとして提供されているのでユーザ目線だと非常に使いやすいです。特に料金面でそれがよくわかり、基本の仮想サーバの料金に、必要な機能を上乗せして料金が決まります。そもそもEC2は従量課金になっておりわかりづらいというデメリットを克服しています。裏を返すとLightsailはサーバ停止しても料金がかかります。なので一時的にサーバが必要な場合には向かないです。

Lightsailの利用、ドメイン取得

Lightsailで仮想プライベートサーバを立てるのは非常に簡単です。設計図の選択というところで、Linux+wordpressというところを選択します。インスタンスタイプは用途次第ですが、一番小さいものでいいと思います。スナップショットを使えば途中からインスタンスタイプを変更することも可能なようです。

ドメイン取得はおなじみのお名前.comを使いました。もろもろで.comドメインで、3000円弱ぐらいですね。まぁあまり馴染みのないドメインにするより、これぐらいの金額であれば有名なドメインの方がなんとなくいい気がしますね。

各サービスの連結(DNSサーバ)

下記サービスの設定自体はそれほど難しくないですが、それを連結させるのに少し手こずるかもしれないです。具体的にはLightsailでインスタンスにアタッチされているグローバルIPと、お名前.comで払い出したドメインを紐付けする作業です。グローバルIPアドレスはドメインネームシステムサーバ(DNSサーバ)で変換が必要です。

Lightsailのホーム画面→ネットワーキング→DNS ゾーンの作成の順に選択し、作成したドメインの名前を入れてDNSゾーンを作成します。その後、作成したDNSゾーン内のネームサーバーという欄に書かれたサーバをお名前.com側のネームサーバ設定に記載します。4つとも記載します。これで、ブラウザ上からドメインで検索すると、Lightsail内のインスタンス(=wordpressブログ)にアクセスすることができるようになりました。

SSL化の実施

SSL化するにあたって、少し悩んでいた点がありました。そもそもSSL化というのは、通信内容を盗聴されないようにする暗号化のようなものです。本サイトには盗聴されても問題ないものしかないのですが、近年はSSL化は当たり前になってきており、chromeでは全てのhttp通信に対して警告表示されています。SSL化するにあたり、Let’s Encript SSL Certificateで払い出される90日限定の証明書を毎月自動で更新することで解決しています。

そもそもSSL化とは?

SSL化とは、ざっくり説明すると、通信部分のデータのやり取りを暗号化して、第三者に見えなくする方法です。それに加えて、リクエスト内容のデータの改ざん防止や、サーバ側のなりすまし防止などのメリットがあります。細かい説明は下記がわかりやすかったので参照させてください。

SSLって何?意味や仕組みをわかりやすく解説! | さくらのSSL
インターネット通信の暗号化(https化)を担うSSLの役割、用語の意味、暗号化通信が成立するまでの過程をわかりやすく解説します。

盗聴対策となりすまし対策は比較的わかりやすいと思いますが、上記ページだと改ざんが防止できる理由がわかりづらいと思いますが、これは電子署名とかハッシュ化という技術を用いています。こちらの3.4 デジタル署名も参考にしてください。

組み込み技術者向けTLS1.3基礎解説(前編):まずはSSL/TLSについて知ろう
インターネット接続機器のセキュリティ技術として広く用いられているTLSの最新バージョン「TLS1.3」は、IoTデバイスを強く意識して標準化が進められた。本稿では、組み込み技術者向けにTLS1.3の基礎を解説する。前編ではまず、TLS1.3のベースとなる一般的な暗号化通信技術であるSSL/TLSについて説明する。

まぁ難しいのですが、ともかく、証明書を作成して、それを閲覧するユーザに向けて配らないといけないということですね。(配るという表現は微妙かもしれないです。)

EC2やLightsailでは、AWSで発行した証明書をそのまま使えない

AWS上で証明書を発行できるAWS Certificate Manager (ACM) というサービスがあります。なので、これをEC2やLightsailに埋め込めばいける!と最初は思っていたのですが、どうもできないようです。

EC2 でホストされているウェブサイトの ACM 証明書の設定
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでホストされているウェブサイトに AWS Certificate Manager (ACM) 証明書を設定したいと考えています。

理由はよくわかんないです笑 対応策として、各種ロードバランサかCloudFrontをそれぞれのサーバの前に差し込んで、そこにインポートすればいいようです。ただ、ロードバランサは結構お値段かかるのと、そもそもロードバランシングする必要ないので無駄だし、CloudFrontのように配信を高速化する必要もないので、あまり気が進まなかったです。結果としては一旦CloudFrontを使ったのですが、別の問題があり(レイアウトが崩れる=CSSが適応されない)やめました。今調べたら対応策がありそうなので、もし詰まっている方いたら参考にしてください。

https://ttydev.com/2019/05/24/post-189/
ClougFrontを使ったシステム構成
Let’s Encript SSL Certificate の更新を自動化することで実現

AWSで証明書を払い出すとなんかめんどくさそうだなぁって思っていたので、別の払い出し方法を検討しました。証明書を払い出すこと自体はそれほど難しくないのですが、趣味程度のブログに証明書の費用かけたくないなぁと。そこで調べた結果、無料の証明書提供サービスですね。ありがたいです。ただ、有効期限が90日のため、システム内で自動更新できるように設定します。またまた引用で失礼します。

https://www.karelie.net/aws-lightsail-build-wordpress-ssl/#aws_lightsail

この仕組みが有用です。というか、私はこのサイト通りに構築しました(初めからこのサイトだけでいいじゃんという感じですが、自身の勉強も兼ねて・・・。)。

LightsailとLet’s Encript SSL Certificateを使ったシステム構成

まとめ

AWS Lightsailを使ってwordpressを使ったブログを公開するシステムを構築しました。EC2だと必要になるストレージやネットワーキング、AMIなどの知識を使わずに、3.5ドルから、それなりに安く構築できるのでおすすめです。もちろんデメリットもあるので、定期的に実態にあったサービスを利用しているかのチェックしましょう。

コメント

タイトルとURLをコピーしました