certbot renewコマンドで証明書更新

証明書の有効期限は90日。期限まで30日未満になったら、certbot-auto renewを実行すれば更新される。

追加のドメインがあるなど、内容が変わるなら、certbot-auto certonly --expandによる再取得へ。


    更新期限が迫ると

    当方の経験では、更新期限の15日前、6日前、期限当日、といった感じでLet's Encryptから3回?メール(件名:Let's Encrypt certificate expiration notice)が届いた。

    忘れそうなら、crontabsystemd.timerで、コマンド実行のスケジュール管理しておくといいかも。


    certbot renewコマンドに影響する前回のコマンド内容

    証明書を同内容で更新するときに使うcertbot renewコマンドでは、プラグインと--pre-hook(取得前コマンド)や--post-hook(取得後コマンド)など、前回の実行内容が引き継がれる。

    前回の内容が/etc/letsencrypt/renewal/証明書の名前.confに残っている。

    (中略)
    
    [renewalparams]
    authenticator = standalone
    post_hook = systemctl start httpd
    server = https://acme-v02.api.letsencrypt.org/directory
    pre_hook = systemctl stop httpd
    

    ここでは、前回、standaloneプラグインと、Webサーバの停止・再起動のコマンドを実行しているという前提。


    certbot renewコマンド

    certbot renewコマンドに、--cert-name証明書の名前(デフォルトで1番目のドメイン名)を指定する。

    ここで、--pre-hook--post-hookが前回と異なるなら、付ける。

    certbot-auto renew --cert-name 証明書の名前

    期限まで30日未満でない場合

    期限まで30日未満でないなら、certbot renewコマンドは下記のようなログ以外はしないので、回数制限を気にせずに毎日実行できる。

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Processing /etc/letsencrypt/renewal/certbot-test.open-code.club.conf
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Cert not yet due for renewal
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    The following certs are not due for renewal yet:
      /etc/letsencrypt/live/certbot-test.open-code.club/fullchain.pem expires on 2019-01-17 (skipped)
    No renewals were attempted.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -