macOSで、zerossl-botが使えるかどうかについての考察
[追記]
以下の記述(zerossl-botの異常動作)は、このissueにある通り、古いバージョンのスクリプトがダウンロードされる事によることが、記事の投稿後に分かった。
スクリプトを修正、またはスクリプト本体を直接ダウンロードすれば、スクリプトとしては動作する事を確認した。
[修正個所]
--- a/zerossl-bot.sh
+++ b/zerossl-bot.sh
@@ -5,9 +5,9 @@
function parse_eab_credentials()
{
PYTHONIOENCODING=utf8
- ZEROSSL_EAB_KID=$(echo $1 | python -c "import sys, json;
+ ZEROSSL_EAB_KID=$(echo $1 | python3 -c "import sys, json;
print(json.load(sys.stdin)['eab_kid'])")
- ZEROSSL_EAB_HMAC_KEY=$(echo $1 | python -c "import sys, json;
+ ZEROSSL_EAB_HMAC_KEY=$(echo $1 | python3 -c "import sys, json;
print(json.load(sys.stdin)['eab_hmac_key'])")
CERTBOT_ARGS+=(--eab-kid "$ZEROSSL_EAB_KID" --eab-hmac-key "$ZEROSSL_EAB_HMAC_KEY" --server "https://acme.zerossl.com/v2/DV90")
}
@@ -40,4 +40,4 @@
parse_eab_credentials $(curl -s https://api.zerossl.com/acme/eab-credentials-email --data "email=$ZEROSSL_EMAIL")
fi
-certbot ${ARGS[@]}
+certbot ${CERTBOT_ARGS[@]}
[主題]
macOSで、zerossl-botが使えるかどうかについて考察したい。
[背景]
自宅Webサーバーのドメインを取得し、SSL化した。SSL証明書は、ウェブブラウザだけで取得できるZeroSSLから取得した。無料なので90日間で有効期限が切れる。
そこで、世の中にはACME(Automatic Certificate Management Environment)と呼ばれる、証明書取得を自動化する仕組みがあり、ZeroSSLも対応しているとサイトに書いているので、使えるのか検討して見た。
[環境]
参考までに、筆者の環境を記載しておく
MacBook Pro 2018 15.4inch(インテルMac)
macOS 13.2 Ventura
MacBook Pro 2016 13inch(インテルMac)
mmacOS 12.6.2
[結論]
いきなりだが、結論から先に言うと、zerossl-botは使えない。
[理由]
zerossl-botは、certbotのラッパースクリプトである。つまり、certbotをZeroSSLで利用できるようにするシェルスクリプトである。
しかし、筆者の環境(MacBook Pro 2016)で確認した限りでは、certbotに制御が渡された段階(多分)でエラーが出た。
[実行したコマンド]
以下のコマンドを実行して見た。(メールアドレスとドメイン名はダミー)
sudo zerossl-bot certonly \
--webroot \
-w /usr/local/apache2/htdocs/ \
-m myEmail@example.com \
-d example.com
まず、普段使っているApacheにパスが通っている状態、すなわち:
$ which httpd
/usr/local/apache2/bin/httpd
となる状況下では、下図のようなエラーが出る。
二つのエラーについて説明する。
-
–apache-bin is missing
これは、理由が分からない。certbotのオプションに–apache-bin
を指定するスイッチがあるが、それを指定してもダメだった。 -
Error while running apachectl configtest.(以下省略)
まず第一に、これはwebrootモードの動作ではない。standaloneモードの動作である。webrootモードを指定しても、standaloeモードで動作する理由が分からない。
加えて、そのstandaloneモードも、稼働中のApacheの設定ファイルがあるディレクトリではない/etc/apache2/other/
に設定ファイルを作って、そのファイルで文法エラーを起こしているように思われる。(エラー発生後、ファイルが消去されるので、詳細は不明)
こちらもcertbotのオプションに–apache-server-root
を指定するスイッチがあるが、それを指定してもダメだった。
これに対して、macOS標準のApacheにパスが通っている状態、すなわち:
$ which httpd
/usr/sbin/httpd
となる状況下では、下図のようなエラーが出る。
こちらでは、–apache-bin is missing
エラーは消える。代わりにSSLの設定がされていないと、怒られる。デフォルトのapacheに対しては、SSLに必要な設定をしていないので、一応は納得できる。
[推論]
二つのApacheで確認した結果から、certbot(zerossl-bot)は、Apacheの実行ファイル(httpd)が、/usr/sbin
にあり、設定ファイルが/etc/apache2
にある前提で動いていると考えられる。これを設定変更するスイッチはあるが、受け付けられないか、zerossl-botから渡されないのではないか?
macOSデフォルトのApacheを設定変更する事は、事実上出来ないので、最終的にzerossl-botは、macOSでは動かないと言えると思う。
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント