LoginSignup
2
2

More than 3 years have passed since last update.

WordPress with NGINX and SSL Certified by Bitnami で Let's EncryptのSSL証明書を更新する

Posted at

公式マニュアルのとおりといえばそれまでなのだけど、ちょっとハマったのでメモ。

ちなみに、試した環境はGCP環境(VMインスタンス)

このドキュメントの最初の方に
「Use The Bitnami HTTPS Configuration Tool」 という項目があるのだが
その下に

IMPORTANT: The Bitnami HTTPS Configuration Tool does not support configuring NGINX web servers yet. If you use NGINX, please follow the alternative approach section.

とあり、残念ながらNGINXでは使えないとのことなので
alternative approach の方で行う。

この alternative approach の Step-5が 証明書更新に関する手順なのだが
手順のコマンドをみると

sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/letsencrypt/lego --tls --email="EMAIL-ADDRESS" --domains="DOMAIN" --path="/opt/bitnami/letsencrypt" renew --days 90
sudo /opt/bitnami/ctlscript.sh start

とある。この ctlscript.sh stop が問題で、これは Bitnamiで管理しているサービススタック
(今回の場合、WordPress with NGINXなので、 nginx/php-fpm/mysql) の停止がかかってしまう。

※ちなみに、無停止で renewできないかとコマンド叩いてみたけどダメだった。

$ sudo /opt/bitnami/letsencrypt/lego --path="/opt/bitnami/letsencrypt" --tls --email="nobody@example.com"  --domains=example.com --domains=www.example.com renew --days 90
2019/08/05 02:22:12 [INFO] [example.com] acme: Trying renewal with 141 hours remaining
2019/08/05 02:22:12 [INFO] [example.com, www.example.com] acme: Obtaining bundled SAN certificate
2019/08/05 02:22:14 [INFO] [example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz/***********-**********-********************
2019/08/05 02:22:14 [INFO] [www.example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz/***********-**********-********************
2019/08/05 02:22:14 [INFO] [example.com] acme: use tls-alpn-01 solver
2019/08/05 02:22:14 [INFO] [www.example.com] acme: use tls-alpn-01 solver
2019/08/05 02:22:14 [INFO] [example.com] acme: Trying to solve TLS-ALPN-01
2019/08/05 02:22:14 [INFO] [www.example.com] acme: Trying to solve TLS-ALPN-01
2019/08/05 02:22:14 acme: Error -> One or more domains had a problem:
[example.com] [example.com] acme: error presenting token: could not start HTTPS server for challenge -> listen tcp :443: bind: address already in use
[www.example.com] [www.example.com] acme: error presenting token: could not start HTTPS server for challenge -> listen tcp :443: bind: address already in use

できるだけ無停止(正確にはnginxの設定 reload)だけでいけないものかと
方法を探ったのだが、見つけられなかったので、観念してサービスダウン時間を許容してもらい、SSL証明書更新作業をすることにした。

Bitnami の公式マニュアルには、全サービス止める手順になっていたが
SSL証明書更新なので、nginxだけ止めれば大丈夫だろうと踏んで作業した。結果問題なく更新できた。

$ sudo /opt/bitnami/ctlscript.sh stop nginx
Unmonitored nginx
/opt/bitnami/nginx/scripts/ctl.sh : Nginx stopped

$ sudo /opt/bitnami/letsencrypt/lego --path="/opt/bitnami/letsencrypt" --tls --email="nobody@example.com"  --domains=example.com --domains=www.example.com renew --days 90
2019/08/05 04:47:11 [INFO] [example.com] acme: Trying renewal with 139 hours remaining
2019/08/05 04:47:11 [INFO] [example.com, www.example.com] acme: Obtaining bundled SAN certificate
2019/08/05 04:47:12 [INFO] [example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz/***********-**********-********************
2019/08/05 04:47:12 [INFO] [www.example.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz/***********-**********-********************
2019/08/05 04:47:12 [INFO] [www.example.com] acme: use tls-alpn-01 solver
2019/08/05 04:47:12 [INFO] [example.com] acme: use tls-alpn-01 solver
2019/08/05 04:47:12 [INFO] [www.example.com] acme: Trying to solve TLS-ALPN-01
2019/08/05 04:47:18 [INFO] [www.example.com] The server validated our request
2019/08/05 04:47:18 [INFO] [example.com] acme: Trying to solve TLS-ALPN-01
2019/08/05 04:47:25 [INFO] [example.com] The server validated our request
2019/08/05 04:47:25 [INFO] [example.com, www.example.com] acme: Validations succeeded; requesting certificates
2019/08/05 04:47:27 [INFO] [example.com] Server responded with a certificate.

$ sudo /opt/bitnami/ctlscript.sh start nginx
/opt/bitnami/nginx/scripts/ctl.sh : Nginx started
Monitored nginx

今回実行した3コマンドは、crontabしかけておけば、自動で実行できるので
1分程度のサービス断が許容される時間帯を確認して、自動化をしておく。

certbot 導入すれば、サービス断無くいけそうな気がするのだが
そこまで検証している余裕がなかったので、今回は公式ドキュメントの手順が良いだろうと判断した。

サービス断無しで(nginxの設定reloadだけで)、証明書更新する方法ご存知の方いたらご教示ください。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2