こんにちは。本日はAWS LightSailで構築したWordPressブログを常時SSL化する手順をまとめておこうと思います。色々なサイトで色々なやり方が紹介されていましたが、結局ここでご紹介する方法が一番つまづきなく最速で導入できましたので、これからブログ構築される方の参考になりましたら幸いです!
AWS Lightsailで提供されているBitnami WordPressイメージで、Let’s Encrypt証明書をインストールする方法は、ここ数年で何度かUpdateがあり、2022年8月現在の最新イメージでは、非常に簡単になりました。。
最新の方法については以下をチェックいただくとよいと思います。
Amazon Lightsail の Bitnami スタックに SSL 証明書をインストールする
Contents
新しい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を押していくだけで完了です。
以上、本日も最後までご覧いただきありがとうございました!
おしまい
コメントを残す