zerossl-botの修正について

[主題]
現在公開中のzerossl-botをmacOSのlaunchdで使用すると、エラーで証明書が取得できない問題を解決したい。

[背景]
筆者は、この記事で説明している通り、自宅サーバーのSSL証明書更新にzerossl-botを用いている。ところが、現在公開中のバージョンを、macOSのlaunchdで使用すると、You have to install certbotというエラーメッセージとともにスクリプトが終了してしまい、証明書が取得できない。
本稿では、この問題を解決する。

[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Tahoe 26.0.1
Xcode 26.0.1
CommandLine Tools for Xcode 16.4.0.0.1

MacBook Pro 2018 15.4inch(インテルMac)
macOS Monterey 12.7.6
CommandLine Tools for Xcode 14.2.0.0.1

[発生原因]
macOSのlaunchdで用いるシェルスクリプトでは、パスを絶対パスで記述する必要がある。しかし、現在公開中ののコードには、which certbotという記述がある。
コードをそのまま実行すれば問題ないが、macOSのlaunchdに登録するプロパティリストで用いると、エラーになる。

[対策]
以下の手順で取得したコード(README記載の手順にはwgetが必要。wgetは標準のmacOSには含まれない)に修正を加えて運用する。変更をdiff形式で示す。

  1. get-zerosslbot-shの取得

    curl -LO https://github.com/zerossl/zerossl-bot/raw/master/get-zerosslbot.sh
  2. zerossl-botの取得

    chmod +x get-zerosslbot.sh
    sudo bash get-zerosslbot.sh
  3. zerossl-botの修正

    diff -u a/zerossl-bot b/zerossl-bot 
    --- a/zerossl-bot	2025-10-21 01:45:37
    +++ b/zerossl-bot	2025-10-21 02:31:09
    @@ -1,10 +1,10 @@
     #!/bin/bash
     
     
    -if [ ! -x "$(which certbot)" ]; then
    -   echo You have to install certbot
    -   exit 1
    -fi
    +#if [ ! -x "$(which certbot)" ]; then
    +#   echo You have to install certbot
    +#   exit 1
    +#fi
     
     CERTBOT_ARGS=()
     
    @@ -54,4 +54,4 @@
     fi
     
     printf '%s ' certbot "${CERTBOT_ARGS[@]}"; echo
    -certbot "${CERTBOT_ARGS[@]}"
    +/usr/local/bin/certbot "${CERTBOT_ARGS[@]}"
  4. 具体的な運用手順は、この記事を参照されたい。

  5. 以上。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL