【2022年最新版】AWS LightSail上のBitnami WordPressをLet’s Encrypt証明書でHTTPS化する方法

こんにちは。本日はAWS LightSailで構築したWordPressブログを常時SSL化する手順をまとめておこうと思います。色々なサイトで色々なやり方が紹介されていましたが、結局ここでご紹介する方法が一番つまづきなく最速で導入できましたので、これからブログ構築される方の参考になりましたら幸いです!

AWS Lightsailで提供されているBitnami WordPressイメージで、Let’s Encrypt証明書をインストールする方法は、ここ数年で何度かUpdateがあり、2022年8月現在の最新イメージでは、非常に簡単になりました。。
最新の方法については以下をチェックいただくとよいと思います。
Amazon Lightsail の Bitnami スタックに SSL 証明書をインストールする

新しいBitnami WordPressイメージを利用している場合

*新しい、と書いているのは、具体的にどのイメージバージョンからこれが使えるのか未確認のためです。少なくとも2022年7月頃以降に作成したイメージであれば、この方法が使えるはずです。

なんと、以下コマンドを実行するだけ。

sudo /opt/bitnami/bncert-tool

これだけで、以下のことをすべて自動でやってくれます。以前は手動で構成しないといけなかった証明書の自動更新(3)や、各種リダイレクト設定(5,6)も一括でやってくれて、超便利に・・

設定も以下のように、対話式で設定が進んでいくので、聞かれた情報を提供していくだけでOK。

  • ドメイン:www.<ドメイン>と、<ドメイン>の両方をリストに追加
  • HTTP -> HTTPS リダイレクト -> YESで設定
  • wwwなしURL -> wwwありURLへのリダイレクト -> YESで設定
  • その逆:NOで設定

最後、メールアドレス情報と、同意事項に同意したら、インストールと配置が始まります。1分ほどで完了。

この状態でブラウザでドメインにアクセスすると、ちゃんと発行した証明書が適用されてHTTPS化されていることが確認できました・・・!

以上!以前(下のステップ)と比べると超絶簡単になっていて感慨深い・・・

古いBitnami WordPressイメージを利用している場合

ステップ0:LightSailコンソールにログイン

LightSailのコンソール画面から、”Connect Using SSH”をクリックしてターミナルを開いておきます。

ステップ1:Let’s Encryptをダウンロード

Let’s Encryptは無償の証明書発行サービスです。ここで発行した証明書をサーバに配置しておくことでHTTPS化が可能になります。

以下のコマンドではgitコマンドを使うのですが、デフォルトではGitが入っていないので、事前に使えるようにしておきます。

## Gitを使えるようにするコマンド
sudo apt-get install git
cd /tmp
git clone https://github.com/letsencrypt/letsencrypt

これでtmpディレクトリ配下にletsencryptというディレクトリができたかと思います。

ステップ2:証明書の発行

サクサク行きます!

ドメイン名のところは、www.から始まるドメイン名で指定すればOKです。

証明書が/etc/letsencrypt/live配下に作られます。

cd letsencrypt
./letsencrypt-auto 
./letsencrypt-auto certonly --webroot -w /opt/bitnami/apps/wordpress/htdocs/ -d ドメイン名 

2021.02.14 更新

2020年末頃にようやく最新のPHP7.4系のBitnami WordPressイメージが利用できるようになりました。このイメージを使うと、もはや./letsencrypt-autoコマンドは以下のようなエラーが出て利用できなくなってしまっていました。

Requesting to rerun ./letsencrypt-auto with root privileges...
./letsencrypt-auto has insecure permissions!
To learn how to fix them, visit https://community.letsencrypt.org/t/certbot-auto-deployment
-best-practices/91979/
Your system is not supported by certbot-auto anymore.
certbot-auto and its Certbot installation will no longer receive updates.
You will not receive any bug fixes including those fixing server compatibility
or security problems.
Please visit https://certbot.eff.org/ to check for other alternatives.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Certbot doesn't know how to automatically configure the web server on this system. However,
 it can still get a certificate for you. Please run "letsencrypt-auto certonly" to do so. Y
ou'll need to manually configure your web server to use the resulting certificate.

どうやら、certbot-autoは最近の更新で非推奨となったようです・・・omg・・・本来であれば、推奨された方法でのインストールをすべきですが、自分の場合はビジネスクリティカルでない&急ぎだったということで、以下の方法で従来の方法で証明書発行できるようにしました。

[Solution] Your system is not supported by certbot-auto anymore – Discuss Frappe/ERPNext

こちらの方法では、古いバージョンのcertbot-auto自体をダウンロードしてきて、./letsencrypt-autoコマンドの代わりに、./certbot-auto certonly …コマンドを実行することで証明書発行できます。

推奨の方法については、時間を見つけて記載します・・・!

ステップ3:サーバへの配置&再起動

サクサクサクサク・・・ステップ2で作成された証明書をApache Webサーバ上の所定の場所に置き直します。

以下のコマンド実行後、https://ドメイン名で接続できるようになっているはずです!なんとこれだけ!超簡単に完了できました。実は、もう少しだけ実施すべきことがありますので、以下のステップも実施ください!

sudo cp /etc/letsencrypt/live/ドメイン名/fullchain.pem /opt/bitnami/apache2/conf/server.crt 
sudo cp /etc/letsencrypt/live/ドメイン名/privkey.pem /opt/bitnami/apache2/conf/server.key
sudo /opt/bitnami/ctlscript.sh restart apache

ステップ4:証明書更新の自動化

Let’s Encryptの証明書は90日間おきに更新が必要になります。以下を手動で実行してもいいのですが、Linux OSにはCronという、特定の処理を定期的に実行する仕組みがあるので、これを利用します。

こちらは手動実行コマンド。renewコマンドで証明書を更新できます。

cd /tmp/letsencrypt
./letsencrypt-auto renew
cp /etc/letsencrypt/live/ドメイン名/privkey.pem /opt/bitnami/apache2/conf/server.key
cp /etc/letsencrypt/live/ドメイン名/fullchain.pem /opt/bitnami/apache2/conf/server.crt
sudo /opt/bitnami/ctlscript.sh restart apache  

これをcronに仕込むには、以下のコマンドを実行していきます。

sudo crontab -e 
1 1 1 * * /tmp/letsencrypt/letsencrypt-auto renew 
2 1 1 * * cp /etc/letsencrypt/live//privkey.pem /opt/bitnami/apache2/conf/server.key 
3 1 1 * * cp /etc/letsencrypt/live//fullchain.pem /opt/bitnami/apache2/conf/server.crt 
4 1 1 * * /opt/bitnami/ctlscript.sh restart apache 

## nanoエディタの場合、編集後はctrl+Xで保存

以上でサーバ側の設定が完了しました。

ステップ5:WordPress側の設定

最後にWordPressの設定を行います。ステップ4まででサーバ側のSSL設定が完了していますが、実際にWordPressサイトにアクセスする際に、httpでアクセスした際にhttpsにリダイレクトする、httpsでのみアクセスさせる、等の制御設定を実施しておくべきです。これらをまとめて一瞬で済ませてくれるのが「Really Simple SSL」というプラグインなのです。

インストール後、設定画面でOKを押していくだけで完了です。

Really Simple SSL

以上、本日も最後までご覧いただきありがとうございました!

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。