副業はAWSでWordPressブログ運営:Let’s EncryptでSSL化

この記事を書いた人

虎ノ門に強い憧れを抱く、30代大手町OL。
外資系コンサルタントとしてIT系の勉強も兼ねて、AWSでブログを初める。
株式投資歴10年、積立投資(NISA)歴7年で、運用資金2000万円越え。
昨年から、不動産投資も開始し、安定的なポートフォリオを目指して日々懸命に働く。Twitter:@toramifire

トラみちゃんをフォローする
未分類
この記事は約8分で読めます。

FIREを目指す30代OLトラみです🤍

トラみは今年からブログ運営を行なっていますが、AWSの無料枠をフルに活用しています✨
その為、ブログ運営費はほぼ無料です🤍

前回の記事では、Wordpressのインストールが完了しWebブラウザから管理画面へアクセスすることができました🤗今回でAWSで無料ブログを構築編は終わり✨最後はSSL化の設定方法をシェアします。

AWSでもドメイン名取得で利用しますが、ブログの運営を安くしてくれるお名前.comのサービス✨
ブログに必要なドメインを最安で取得できます🤗
ブログ運営したいけどAWSはハードル高いという方は、是非お名前.comのレンタルサーバーも検討してみてください🤗

はじめに(SSL化について)

昨今のWebサイトはSSL化(Web通信の暗号化)は当然対応が必須となっており、「当たり前品質」に該当するため、SEOへの影響も非常に大きいので自身でサーバーを構築したら確実に対応できていることを確認してください🤗

では、肝心なSSL証明書の取得先ですが、AWSのサービスACMなどありますが、
ACMの場合、ALBをセットで利用する必要があり費用が結構発生してしまいます。
(月額2,000円程度)

個人ブログで収益を得る目的であれば、無料の「Let’s Encrypt」が十分役割を果たせます🤗
Let’t Encryptでの手順を紹介します✨

SSL化の流れ
  • ①AWSでHTTS(443ポート)通信の許可
  • ②Let’s EncryptによるSSL化
  • ③SSL証明書の自動更新(Cron利用)
  • ④Wordpressのデータベースの設定変更

以下は本日のBefore→Afterです✨

http通信の為Safariで開くと「安全ではありません」となっています😭
SSL化すると鍵マークで通信が暗号化されます🤗

①AWSでHTTPS通信の許可設定

まず、事前準備としてAWSのWebサーバのセキュリティグループでHTTPS通信の許可設定を行います。

もうおなじみのマネジメントコンソールから設定してください🤗

Let’s EncryptからSSL証明書をダウンロードしますが、
証明書のダウンロードにHTTPとHTTPS両方の通信を利用する為、
この時点ではHTTP通信のポートを削除しないよう注意ください。

②Let’s Encryptで常時SSL化

SSL証明証のダウンロード

ターミナル(Teraterm)からWebサーバにログインください。
ログインしたら以下コマンドを入力してLet’s EncryptからSSL証明書のダウンロードをしましょう🤗

sudo amazon-linux-extras install epel Installing epel-release

インストール中、確認を求められるため、2回「y」を入力ください。
続けて、証明書のインストールです。

sudo yum install certbot python-certbot-apache

こちらも2回確認が求められるので、2回「y」を入力ください。

続いて、SSL証明書の取得です。

  • certbot certonlyコマンドで証明書を取得します。
  • “certonly” は証明書の取得だけ行い、Webサーバーへの配置は手動で行うコマンドです
  • -wでルートディレクトリを指定し、-dでドメイン名に変更ください
sudo certbot certonly --webroot -w /var/www/html/ -d www.toramiinvestment.com

続いて以下を確認されるため、入力してください。

  • メールアドレス →「自身のメールアドレス」
  • 利用規約 →「y」
  • キャンペーン情報や広告の送付 →「n」(必要であればy)

以下のように「Congratulations!」が出たらインストール完了です🤗

以下のコマンドを実行して、「etc/letsencrypt/live」フォルダの配下に「.pem」と鍵ファイルが格納されていることを確認してください。

sudo ls -l /etc/letsencrypt/live/ドメイン名/

Apacheに証明書と秘密鍵の関連付け

  • /etc/httpd/conf.d/ssl.conf に証明書および秘密鍵を指定します
  • ssl.conf にサーバー証明書、秘密鍵、証明書チェーン(中間証明書)を指定しています。
cd /etc/httpd/conf.d
sudo vi ssl.conf

上画像の通り、「SSLCertificatefile」「SSLCertificateKeyFile」にLet’sEncryptから入手した鍵のパスを登録します。(下のコードを利用してください🤗)

SSLCertificateFile /etc/letsencrypt/live/www.tabisuruneko.net/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.tabisuruneko.net/privkey.pem

ssl.confを修正後、以下で文法チェックを行い、
syntax OKと出力されることを確認してください。

sudo httpd -t

最後にApacheを再起動させてください✨

sudo systemctl restart httpd

以上でssl.confの設定は終了です。

③SSL証明書の自動更新

Let’s Encrypt唯一の弱点ですが、3ヶ月で証明書の有効期限が切れてしまう為、3ヶ月毎に更新する必要があります💦

Linuxの機能でCronというコマンドを自動実行を行う機能がありますので、これで毎月更新するコマンドを自動で行なってもらいます。

まず、自動実行するコマンドをテストしましょう🤗
以下は、–dry-runオプションを含めている為、SSL証明書の更新は行いませんが、
直前までテストを行うコマンドです。
–post-hookオプションで更新後にApacheの再起動もおこなっています。

sudo certbot renew --force-renew --dry-run --webroot-path /var/www/html/ --post-hook "systemctl reload httpd”

SSL証明書の取得時同様、エラーがなく「Congratulation!」が出力すれば成功です🤗
(http,hpptsポートが開いていることを確認ください)

続いて、実際にCronに登録していきます🤗
「crontab -e」コマンドで、打ちたいコマンドを直接記載する方法もありますが、
「crontab -r」と打ち間違うと、登録したcron全て消去されてしまいます・・・

打ち間違いは怖い為、以下のように登録することをお勧めします。
個人のブログ運営程度であれば被害は少ないですが、
エンジニアにとっては怖い事象ですよね

sudo vi /etc/cron.d/letsencrypt
0 2 1 * * sudo certbot renew --force-renew --webroot-path /var/www/html/ --post-hook "systemctl reload httpd"

上記は、毎月1日2時にSSL証明書を更新するコマンドです。
–dry-runオプションを外しています。

④Wordpressのデータベースの設定変更

最後に、DBサーバにログインしてWordpressのデータベース内の設定を変更します。
WordPressのデータベース内に旧ドメインやIPアドレスが登録されている場合、
SSL化により画像や画面が崩れて表示されることがあります。

前回DBサーバの構築の際に紹介した以下のコマンドでDBサーバへログインしてください。

mysql -u admin -p -h [AWS RDSのエンドポイント名]

WordPress用に作成したデータベース「wordpress」に切り替えます。

use wordpress;

以下の2つのコマンドで、WordPressのデータベースに設定しているURLの照会をしてください。

select option_name,option_value from wp_options where option_name = 'siteurl';
 select option_name,option_value from wp_options where option_name = 'home';

上画像の通り、データベースへの登録が「http」アドレスとなっています。
この値を以下のコマンドで「https」に変更します。

update wp_options set option_value = 'https://ドメイン名' where option_name = 'siteurl';
update wp_options set option_value = 'https://ドメイン名' where option_name = 'home';
再度照会するとhttpsに変更できています🤗

⑤リダイレクト設定

リダイレクト設定とは、折角SSL通信を設定してhttps化したにも関わらず、http通信を行えば元のサイトにアクセス出来てしまいます。
リダイレクト設定を行うことで全てのhttp通信をhttpsに勝手に変換してくれるだけでなく、ドメインのSEOの評価も引き継げます🐯

では、手順です🤗

cd /var/www/html
sudo vi .htaccess

以下の画面の通り、1行リダイレクトルールをこの場所に挿入します。
RewriteRule ^http://www.tabikabe.jp$ https://www.tabikabe.jp/ [R=301,L]

最後にhttpdデーモンを再起動して終わりです🐯

sudo systemctl restart httpd

まとめ

以上でWordPressのサイトのSSL化は終了です🤗お疲れ様でした🐯
Webブラウザで「https://ドメイン名」にアクセスすると鍵マークがついているはずです🤗

以上全7話に渡り連載させていただいた、
AWS無料枠をフル活用した、初期投資ゼロ、ランニング費用月額100円の収益ブログ作成は終わりとなります🤗

実際にWordpressの管理画面から初期設定を行い、
ブログを記載していき収益化を一緒に目指しましょう🤗

トラみの激安ブログ運営を見て、ブログに興味を持ったら、
お名前.comでドメイン名の取得を是非検討してみてください🤗

また見てもん🐯

コメント