サーバー環境

Let’s Encrypt dns-01 自動認証で ワイルドカードの更新も自動化

DNS TXTレコードを自動で登録する仕組み

  1. ダイナミックなDNSサーバーを立ち上げる
    スクリプトでTXTレコードを書き換えられるDNSということで、独自DNSを立ち上げてみることにします。 これなら取得時のhookを利用すればどうにかなるのではということですね。自分でDNSサーバーを立ち上げるのは実に久しぶりです。
    安全のためセカンダリーはプロバイダーのセカンダリーサービスを利用することにします。
    今回検証用にしばらくこのDNSサーバーを運用してみることにします。
  2. 証明書取得準備作業 スクリプト作成
  3. まず手動操作でcertbotによりSSL/TLS サーバ証明書を取得
    この時 dns-01認証で要求、hook を利用して DNSにTXTレコードを追加してDNSを更新(nsupdateを使う)
  4. DNSのTXTレコードが登録されると certbotのタスクが検知、証明書を発行してくれる。
  5. 発行された証明書によりApacheにSSLを登録(今回は手作業)
  6. その後、更新(renew)も認証用スクリプトで証明書をマニュアル操作なく更新可能

今回インストールしたサーバー環境

  • linux
    $ cat /etc/centos-release
    CentOS Linux release 7.4.1708 (Core)
  • Webサーバー
    $ apachectl -v
    Server version: Apache/2.4.6 (CentOS)
    Server built: Aug 23 2017 15:47:21
  • certbot バージョン確認
    $ certbot –version
    certbot 0.23.0
  • bind(named)のバージョン
    $ named -v
    BIND 9.11.1

DNS環境の構築

named.conf

named.confはインストールしたデフォルトのファイルを一部修正しますが、ほぼ内容は同じです。外部に公開する場合はport53をファイヤーウォール等々で解放します。
ドメインのネームサーバーも自前のDNSに変更する手続きや設定も必要です。ドメインを取得したプロバイダーで設定します。
DNSは狙われやすいので、今回の設置では、実際には chroot 対応にしてあります。

対象となるドメインのZONEファイル

構築したDNSの起動動作確認

実際にTXTレコードが 「nsupdate」コマンドにより更新できているか同様に確認する

証明書取得準備作業 スクリプト作成

認証用スクリプト

TXTレーコードのクリーンアップ用スクリプトの記述

certbot dns-01認証による証明書取得

certonly
証明書取得のみ
d natts.info
ドメインでの証明書
-d *.natts.info
ワイルドカードでの証明書
–preferred-challenges dns-01
dns-01での認証
–server https://acme-v02.api.letsencrypt.org/directory
ACME ディレクトリリソースの URI を指定します。
–manual
ドメイン名の認証を手動で行い、SSL/TLS サーバ証明書を取得
–manual-auth-hook /etc/letsencrypt/renewal-hooks/pre/dns-01-auth.sh
TXTレコードを取得事前hookにより登録
–manual-cleanup-hook /etc/letsencrypt/renewal-hooks/post/dns-01-clean.sh
取得後のhookによりTXTレコード削除

実行結果

取得した証明書を確認

更新(renew)も認証用スクリプトで証明書をマニュアル操作なく更新可能

renewの動作確認

–dry-run を利用して登録してある全ての証明書の更新を検証する。
このオプションで実際には更新されない。
renewは登録してある全てのLet’s Encryptで発行した証明書を更新します。
renew (–dry-runを指定しない場合)では更新期限ではない証明書は発行しません。
実際の自動更新は crontab 等を利用して定期的にこのコマンドを実行する

最近の記事

  1. wordpres5をubuntu nginxにインストール
  2. ubuntu 20.04 nginx php mysql Webサーバー環境整備
  3. Ubuntu nginx SSL
  4. EC-CUBE 4.0 インストール
  1. Web・デザイン

    JavaScriptのアニメーションライブラリ AniJS
  2. Raspberry PI

    raspberryPi 4B CenotOS7 をインストール LAMP環境を…
  3. サーバー環境

    Vagrant ローカル環境構築 centos7
  4. サーバー環境

    Centos7 nginx(with ssl let’s Encry…
  5. Web・デザイン

    美しい文字 「Google Web Fonts」「Adobe Web Font…
PAGE TOP