certbotの更新時のオプションをstandaloneからwebrootに切り替えるには/etc/letsencrypt/renewalのconfでstandaloneからwebrootに設定を書き換える
certbotの更新設定はrenewal配下のconfファイルに記述する
certbotで更新する時に下記のエラーが出力される
Simulating renewal of an existing certificate for example.com
Performing the following challenges:
http-01 challenge for example.com
Cleaning up challenges
Failed to renew certificate example.com with error: Problem binding to port 80: Could not bind to IPv4 or IPv6.
上記のエラーはcertbotの更新サーバ上で80ポートを別のプログラムが利用中なので実行できないという内容です。
certbotはstandaloneモードでは認証用のwebサーバを80ポートにあげるからです。
実際にnetstatでポートを確認するとnginxが80ポートを利用中です。
# netstat -ltnp | grep "tcp\s.*80\s"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 14946/nginx: master
更新する方法は以下2つの方法があります。
- 80ポートを使用しているアプリケーションを停止してからcertbot renewする
- standaloneモードではなく80ポートを利用しているwebサーバ上で認証する
renewalのconfファイルでwebrootに切り替える
80ポートを利用しているアプリケーション上で認証の設定が可能ならwebrootモードに切り替えれば認証できます。
standaloneモードになっている場合は設定ファイルでwebrootに切り替えます。
ファイルは{更新したいドメイン名}.confという名前になっています。
# vim /etc/letsencrypt/renewal/example.com.conf
#[renewalparams]
#authenticator = standalone
#account = {acountの文字列が記載}
#manual_public_ip_logging_ok = None
#server = https://acme-v02.api.letsencrypt.org/directory
↓上の設定内容をコメントアウトして下の設定に書き換える
[renewalparams]
authenticator = webroot
account = {acountの文字列が記載}
manual_public_ip_logging_ok = None
server = https://acme-v02.api.letsencrypt.org/directory
webroot_path = /var/www/html,
[[webroot_map]]
example.com = /var/www/html
webfoot_pathは更新したいドメインの現在のドキュメントルートかまたは認証用のディレクトリを設定します。上記の例ではexample.comのドキュメントルート/var/www/example.com/htdocsとは別のディレクトリを指定しています。
ドキュメントルートとは別のディレクトリをを指定しているのでconfファイルに設定を追記します。
・nginxの場合
## Let'sEncryot authentication
location /.well-known/acme-challenge {
index index.php index.html index.htm;
root /var/www/html/;
}
認証パスは.well-known/acme-challengeです。
locationでhttp://example.com/.well-known/acme-challengeにアクセスが来たときには/var/www/htmlを利用するように設定します。(他の設定によっては記述する内容や位置が異なる)
設定変更後にリロードしたらcertbot renewで更新できるか確認
# certbot renew --dry-run
→dryrunで確認して問題なければ実行する
# cerbot renew
更新時にドメインを指定したい場合は–cert-nameで指定する
Let’sEncryptで一部の証明書のみを更新する方法