DNS-01 チャレンジで Let’s Encrypt の証明書を取得する

その他

はじめに

外部公開していない Apache HTTP Server を https 化するため証明書を取得する。
HTTP-01 チャレンジは使用できないから DNS-01 チャレンジで証明書を取得する必要がある。
MyDNS.jp は DSN-01 チャレンジに対応していてスクリプトが公開されているから利用させてもらう。
 

スクリプトのダウンロード

MyDNS.jp 用のスクリプト DirectEdit を https://github.com/disco-v8/DirectEdit/ から取得する。

cd /var/www/test.jisaba.life/web/
wget 'https://github.com/disco-v8/DirectEdit/archive/master.zip' -O DirectEdit-master.zip
unzip ./DirectEdit-master.zip
cd /var/www/test.jisaba.life/web/DirectEdit-master/
chmod 700 ./*.php
chmod 600 ./*.conf

 

txtedit.conf を編集する

sudo vi txtedit.conf

$MYDNSJP_MASTERID  = 'yourmasterid';
$MYDNSJP_MASTERPWD = 'yourpasswd';
$MYDNSJP_DOMAIN = 'yourdomain';

 

証明書を取得する

sudo certbot certonly --manual \
--preferred-challenges dns \
--manual-auth-hook /var/www/test.jisaba.life/web/DirectEdit-master/txtregist.php \
--manual-cleanup-hook /var/www/test.jisaba.life/web/DirectEdit-master/txtdelete.php \
-d test.example.com \
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos -m yourmailaddr \
--manual-public-ip-logging-ok

 

Apache の設定ファイルを編集する

取得した証明書を設定ファイルに反映させるため、conf ファイルに次の2行を追加する。

SSLCertificateFile /etc/letsencrypt/live/test.jisaba.life/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/test.jisaba.life/privkey.pem

 

/etc/cron.d/certbot があれば有効期限まで 30 日を切ったら自動更新されるハズ。
無ければ次の内容でファイル certbot を作って保存する。

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew --no-random-sleep-on-renew
タグ