Help us understand the problem. What is going on with this article?

Let's Encrypt更新!certbot renewコマンドでうまくいかなかったときの対処法

環境

Linux CentOS 7
apache
Let's Encrypt

更新のエラー

Let's Encryptは3か月に1回毎に更新しなければいけません。
そのためバッチを使用して自動更新を行っているのですが、更新が失敗したという通知のメールが届きました。

実際にCentOSの中に入って以下のコマンドを実行

certbot renew --dry-run

以下、結果

Congratulations, all renewals succeeded.

あれ、成功してんじゃん

というわけでdry-runを外してやってみる事に。

certbot renew

以下、結果

Attempting to renew cert (***********.com) from /etc/letsencrypt/renewal/************.com.conf produced an unexpected error: Problem binding to port 80: Could not bind to IPv4 or IPv6.. Skipping.

むむむ

dry-runの時は成功して、本番実行時には失敗するという。。

エラーの内容を見ると、80ポートが使えませんでしたよ。みたいなことなんですが。

解決方法

/etc/letsencrypt/renewal/********.com.confへアクセス

以下の記述に注目

authenticator = standalone

standaloneモードになっている。。。!
standaloneモードは、80番ポートを使用するため、証明書を更新する際はapacheをいったん停止しなければならないとのこと。

それは困るのでwebrootパターンへ変更!!

[renewalparams]
#authenticator = standalone
#account = 98155b431f2d9036dcaae14606620c3f
#server = https://acme-v02.api.letsencrypt.org/directory
#installer = apache
authenticator = webroot
account = 56f88f044b7c750ee8b687a024c4ece1
server = https://acme-v02.api.letsencrypt.org/directory
post_hook = /usr/bin/systemctl reload httpd.service

[[webroot_map]]
*****.com = /var/www/html/****
www.*****.com = /var/www/html/****

設定完了後に、再度letsencryptの更新を行えば無事、完了。。。!

21century_girl_
東京都在住のフリーランスエンジニアです。常駐、リモート、専門学校講師など、複数の案件をやってます。 PHP、Python、SQL、C#、Javascript、vue.js、VBScript、HTML、CSS等。 最近はRaspberry Piの研究開発も行ってりおります。 twitter: https://twitter.com/21century_girl_
https://twitter.com/21century_girl_
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away