apache/mod_md

ACMEプロトコルを用いて,X.509証明書のドメイン検証,管理を自動化できる.

設定

httpd.conf

LoadModule md_module lib64/httpd/modules/mod_md.so

extra/acme.conf

# MD common settings
MDBaseServer            on
MDCertificateProtocol   ACME
MDCAChallenges          http-01                                                            # http認証.同一ドメインに複数サーバの場合用にDNS認証もある.
MDDriveMode             auto                                                               # 自動更新.他にmanual(更新はしない),always(無条件の自動更新)がある.
MDPrivateKeys           RSA 2048                                                           # サーバ鍵の鍵種別,鍵長
MDRenewWindow           3d                                                                 # 更新時期.ここでは3d(=3日前).デフォルトは30%.
MDStoreDir              md                                                                 # 証明書保存パス.${ServerRoot}からの相対パス
MDCertificateAuthority  https://acme-v02.api.letsencrypt.org/directory
MDCertificateAgreement  https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf

<Location       "/md-status">                                                              # 証明書管理の状況を確認するパス
    SetHandler  md-status
    Require     ip 127.0.0.1
</Location>

# [slackbear.net] settings                                                                 # 要求するドメインの数だけ列挙できる
MDomain                 slackbear.net
MDCertificateAgreement  accepted

extra/httpd-ssl.conf

<VirtualHost _default_:443>
    DocumentRoot             "/var/www/html"
    ServerName               slackbear.net:443
    ServerAdmin              webmaster@slackbear.net
    SSLEngine                on
</VirtualHost>

初期構築

設定後の初回起動時は各設定チェックが実施され,ダミー証明書の作成までとなる.
その後の再起動で正規証明書が発行される.

証明書初回発行

# /etc/rc.d/rc.httpd restart
# ls /etc/httpd/md/domains/*
/etc/httpd/md/domains/slackbear.net:
job.json
md.json
fallback-cert.pem
fallback-privkey.pem
# /etc/rc.d/rc.httpd restart
/etc/httpd/md/domains/slackbear.net:
job.json
md.json
privkey.pem
pubcert.pem

証明書導入

extra/httpd-ssl.conf で発行された証明書を読み込む

<VirtualHost _default_:443>
    DocumentRoot             "/var/www/html"
    ServerName               slackbear.net:443
    ServerAdmin              webmaster@slackbear.net
    SSLEngine                on
    SSLCertificateFile       md/domains/slackbear.net/pubcert.pem    ←追加
    SSLCertificateKeyFile    md/domains/slackbear.net/privkey.pem    ←追加
</VirtualHost>

Apacheを再起動

# /etc/rc.d/rc.httpd restart

証明書更新

以降は${MDRenewWindow}で設定したタイミングで自動で更新されていく.
Let's Encryptでは有効期限90日であるため,${MDRenewWindow}を30%とすると30日前に自動更新されることになる.



---
update at 2021/12/06 18:14:51

※注:当サイトは特定環境において確認できた事象のみを記述しています。他の環境での動作は一切保証しません。