こんにちは。
GCE(Google Cloud Engine)とbitnamiのWordPress環境でSSLをLet’s encryptでSSL証明書を取得する方法とcronを使ったSSL自動更新について解説します。
2023/11/22 追記 自動更新のスクリプトをGCEの最低スペック用に書き換えました。
Let’s encryptとは
無料でSSL証明書を取得できるサービスです。導入方法も簡単でおすすめです。
certbotというコマンドラインツールを用いて、Let’s encryptからSSL証明書を発行します。
SSL証明書の取得
前提として、GCEにbitnamiをインストール済、http://[独自ドメイン]、http://www.[独自ドメイン]がアクセスできることが必要です。
それではやり方を解説します。
まずは、GCEからSSHコンソールを立ち上げます。
次に以下のコマンドでcertbotをインストールします。
sudo apt-get install certbot -y
インストールが終了したら、以下のコマンドで正常にインストールされているかを確認します。
certbot --version
バージョンが表示されればOKです。
SSLを取得する前に、以下のコマンドでnginxを停止しましょう。
sudo /opt/bitnami/ctlscript.sh stop nginx
次に以下のコマンドでSSL証明書を取得します。
sudo certbot certonly --standalone -d [独自ドメイン] -d [www.独自ドメイン] -m [メールアドレス]
すると、規約に同意するか訊かれるのでy
を入力してエンターキー。
次に、ニュースレター送るけどいい?と訊かれるので、y
かn
を入力してエンターキー。
無事に登録が完了すると、Congratulations!
と称えてくれます。また、有効期限も表示されます。(今回だと2023-12-13)
SSL証明書が取得できたら、停止しておいたnginxを開始しましょう。
sudo /opt/bitnami/ctlscript.sh start nginx
SSL証明書を自動更新する
SSL証明書は3ヶ月で有効期限が切れてしまうため、cronを使って自動更新コマンドを登録しましょう。
以下のコマンドでcronを編集します。
crontab -e
初回起動の場合は、エディタを選択できるので使いやすいものを選びましょう。
エディタが開いたら、以下の文章を入力します。
0 3 15 * * sudo certbot renew --pre-hook "sudo /opt/bitnami/ctlscript.sh stop nginx && sleep 10" --post-hook "sudo /opt/bitnami/ctlscript.sh start nginx"
ポイント
0 3 15 * *
は毎月15日の3:00に実行することを表しています。--pre-hook
はSSL証明書更新の前に実行するコマンドを指定できます。今回はnginxを停止しています。sleep 10
はnginxを停止するコマンドを実行してから10秒待機します。GCEの最低スペックを使っているため、すぐにrenewを実行するとnginxが停止中のためポート80が使用されているとエラーが出てしまいます。(2023/11/22追記)--post-hook
はSSL証明書更新の後に実行するコマンドを指定できます。今回はnginxを開始しています。
実行する頻度は必要に応じて変更してください。編集が終了したら、保存して閉じます。(vimなら:wq
)
以下のコマンドで登録したcronを確認できます。
crontab -l
cronの内容を試しに実行してみましょう。
sudo certbot renew --pre-hook "sudo /opt/bitnami/ctlscript.sh stop nginx && sleep 10" --post-hook "sudo /opt/bitnami/ctlscript.sh start nginx"
有効期間が残っているため、更新はできないようです。
SSL証明書の取得&自動更新は以上で終了です。お疲れ様でした。
Be First to Comment