サーバー環境

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. EC-CUBE 4.0 インストール
  1. プログラミング

    ワードプレス AmCharts Javascript ライブラリー を表示させる…
  2. Web・デザイン

    ページ上の要素をふるわす CSShake 「CSSアニメーションライブラリー」
  3. サーバー環境

    無料SSL証明書 Let’s Encrypt でワイルドカードな証明…
  4. プログラミング

    Django Webアプリケーションの構築 データベースの内容一覧表示 およびア…
  5. Web・デザイン

    CSS3 リッチな表現 角丸、影、グラデーションについて学ぶ
PAGE TOP