サーバー環境

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. プログラミング

    画像をポップアップするライトボックス jQuery プラグイン 「lightb…
  2. Web・デザイン

    列行を一次元に並べて表示する CSS 「FlexBox」 jQuery + Aj…
  3. プログラミング

    centos7 python3のインストール、RSSを取得、CGIでパースしてW…
  4. サーバー環境

    Macにmysql 8.0.x をインストールする。
  5. プログラミング

    Django Webアプリケーションの構築 Nginxで公開 Mysqlに接続す…
PAGE TOP