yoshiislandblog.net
元営業の駆け出しアラサーSEが、休日にMACと戯れた際の殴り書きメモ。日々勉強。日々進歩。

この記事は3年以上前に書かれた記事で内容が古い可能性があります

Nginxコンテナに、Let’s Encryptで証明書を自動更新で当てたい場合

2019-12-01

サクッとDocker始める
docker事始め

で作成したnginxコンテナに、Let’s Encryptで証明書を当てたい場合

Let’s Encryptの証明書を更新する(Bitnami on AWS)
Let’s Encryptの証明書を更新する(EC2)
AmazonLinuxのSSL化対応

この辺りで言及している通り、一度Apache/Nginxを停止してから更新する必要があある

止めていないと以下のようなエラーが出る

# /root/letsencrypt/certbot-auto renew --force-renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/www.yoshiislandserver.net.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Plugins selected: Authenticator standalone, Installer None
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for www.yoshiislandserver.net
Cleaning up challenges
Attempting to renew cert (www.yoshiislandserver.net) from /etc/letsencrypt/renewal/www.yoshiislandserver.net.conf produced an unexpected error: Problem binding to port 80: Could not bind to IPv4 or IPv6.. Skipping.
All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/www.yoshiislandserver.net/fullchain.pem (failure)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/www.yoshiislandserver.net/fullchain.pem (failure)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 renew failure(s), 0 parse failure(s)

通信ルールで遮断している場合も同じエラーがでる模様
参考:
Let’s Encryptの証明書を更新する(Bitnami on AWS)

当たり前だけど、DockerでNginxを動かしている場合は、コンテナを止めなければいけない

自動で更新されるように、crontabに入れるなkらこんな感じ

# crontab -l
0 0 1 * * sudo docker stop 【コンテナID】 && sudo /root/letsencrypt/certbot-auto renew --force-renew && sudo docker start 【コンテナID】

参考:Letsencryptを更新しようとしたら例の「Problem binding to port 80」が出現する