certbotの代わりにLegoを使ってみます。
インストール #
Releasesからダウンロードします。
https://github.com/go-acme/lego
シングルバイナリなので/usr/local/bin
に配置するだけです。
シェルスクリプトの作成 #
コマンドを直接入力でもできますが、シェルスクリプトにしたほうが楽です。
今回はCloudflareのDNSを使って証明書を取得します。
以前の記事
と同じようにAPIトークンを先に取得しておきます。
webrootモードでやることも可能です。
Let’s Encrypt #
#!/bin/bash
CF_DNS_API_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
lego --path "/usr/local/etc/lego/data" \
--email "[email protected]" \
--domains "example.com" \
--domains "*.example.com" \
--dns cloudflare \
-a run
ZeroSSL #
ZeroSSLのアクセスキーが必要です。
#!/bin/bash
ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
JSON=$(curl -s -X POST "https://api.zerossl.com/acme/eab-credentials?access_key=$ACCESS_KEY")
EAB_KEY=$(echo "$JSON" | jq -r .eab_kid)
EAB_HMAC_KEY=$(echo "$JSON" | jq -r .eab_hmac_key)
CF_DNS_API_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
lego --path "/usr/local/etc/lego/data" \
--email "[email protected]" \
--domains "example.com" \
--domains "*.example.com" \
--server "https://acme.zerossl.com/v2/DV90" \
--eab --kid "$EAB_KEY" --hmac "$EAB_HMAC_KEY" \
--dns cloudflare \
-a run
シェルスクリプトを実行すると取得ができます。
このシェルスクリプトでは/usr/local/etc/lego/data
に証明書やアカウント情報が保存されます。
アクセストークン等が含まれているのでパーミッションに注意して保存します。
証明書のリストを表示 #
$ lego --path /usr/local/etc/lego/data list
証明書の更新 #
先程作成したシェルスクリプト
のrun
をrenew
に変えると、そのまま更新用スクリプトとして使えます。