KUINSDBのDNSレコードAPIを使ってcertbotのDNS-01 challengeをするためのスクリプト
curljq
-
.env.exampleを.envにコピーするcp .env.example .env
-
.envを編集し、APIエンドポイントやトークンを設定する
DOMAIN=example.kyoto-u.ac.jp
GET_ENDPOINT_URI=
GET_ENDPOINT_METHOD=GET
ADD_ENDPOINT_URI=
ADD_ENDPOINT_METHOD=POST
DEL_ENDPOINT_URI=
DEL_ENDPOINT_METHOD=POST
AUTH_TOKEN=xxxxx
.env にはKUINSDBのDNSレコード管理APIを使うのに必要な情報を記載する。
DOMAINには管理対象のドメイン(ゾーン名)を記載する。
GET_ENDPOINT_URIには既存レコードの取得のためのURI、
ADD_ENDPOINT_URIにはDNSレコードの追加のためのURI、
DEL_ENDPOINT_URIにはDNSレコードの削除のためのURIを記載する。
また、各URIに対して_METHODでHTTPメソッドを指定する。
AUTH_TOKENには認証に必要なAPIトークンを指定する。
参考: UPKI certbotによる証明書管理手順 https://nii-auth.atlassian.net/wiki/spaces/UPKIManual/pages/43884506/ACME+certbot
certbot certonly --manual \
--preferred-challenges dns \
--server 'https://secomtrust-acme.com/acme/' \
--key-type rsa \
--manual-auth-hook /path/to/authenticator.sh \
--manual-cleanup-hook /path/to/cleanup.sh \
-d example.kyoto-u.ac.jp以下のパラメータは実際の値に書き換える必要がある。他の部分はUPKIを認証局として使う場合は書き換えない。
/path/to/authenticator.sh/path/to/cleanup.sh: スクリプトのパスに書き換える-d: 対象のドメインに書き換える
- certbot が
authenticator.shを呼び出す authenticator.shが KUINSDB API を使って_acme-challengeTXT レコードを追加する- DNSの設定が完了するまで待機する(60秒)
- certbot が ACME サーバーに検証を依頼する
- 検証完了後、certbot が
cleanup.shを呼び出す cleanup.shが KUINSDB API を使って_acme-challengeTXT レコードを削除する
- 情報環境機構「サーバー証明書申請」 https://www.iimc.kyoto-u.ac.jp/ja/services/network/admin/cert
- KUINSDB DNSレコードAPIについて https://db.kuins.kyoto-u.ac.jp/manual/user/part1/part1_11.html
- certbot manual-auth-hookについて https://eff-certbot.readthedocs.io/en/latest/using.html#pre-and-post-validation-hooks