Apache httpd : mod_md の設定2020/05/15 |
[mod_md] をインストールして、Let's Encrypt から取得する SSL/TLS 証明書の 取得/更新 を自動化します。
設定をしたい対象のバーチャルホストごとに設定可能です。
なお、[mod_md] を設定するバーチャルホストについては、個別の SSL/TLS の手動設定は不要です。
また、Let's Encrypt から手動で取得する際と同様、設定をしたい対象のサイトは、インターネット側からアクセス可能である必要があります。
|
|
[1] | [mod_md] をインストールします。 |
[root@www ~]#
dnf -y install mod_md # インストール後 [mod_md] モジュールは有効化される [root@www ~]# cat /etc/httpd/conf.modules.d/01-md.conf LoadModule md_module modules/mod_md.so |
[2] | [mod_md] の設定です。 |
[root@www ~]#
vi /etc/httpd/conf.d/acme.conf # 新規作成 MDBaseServer on MDCertificateProtocol ACME MDCAChallenges http-01 MDDriveMode auto MDPrivateKeys RSA 2048 MDRenewWindow 33% MDStoreDir md 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 10.0.0.0/24 </Location> # [MDRenewWindow] # 証明書を更新するタイミングを指定する # 指定しない場合のデフォルトは [33%] # Let's Encrypt の有効期限 = 90日 # 90日 * 33% ≒ 30日 ⇒ 残り30日で更新される # 日数で指定する場合の記号は [d] # 30日 ⇒ [30d] # [MDStoreDir] # 証明書等の各種データの保存ディレクトリ # 指定しない場合のデフォルトは [md] # [ServerRoot] からの相対パス # [md-status] # MD の状態をモニタリングする |
[3] | SELinux を有効にしている場合は、ポリシーの変更が必要です。 |
[root@www ~]# setsebool -P httpd_can_network_connect on
|
[4] | 対象のバーチャルホストごとに設定します。 各 [ServerAdmin] には Let's Encrypt からの各種通知を受け取ることが可能な、有効なメールアドレスを指定する必要があります。 |
MDomain www.srv.world MDCertificateAgreement accepted DirectoryIndex index.html ServerAdmin root@www.srv.world <VirtualHost *:80> DocumentRoot /var/www/html ServerName www.srv.world </VirtualHost> <VirtualHost *:443> SSLEngine on DocumentRoot /var/www/html ServerName www.srv.world </VirtualHost> MDomain dlp.srv.world MDCertificateAgreement accepted DirectoryIndex index.html ServerAdmin root@dlp.srv.world <VirtualHost *:80> DocumentRoot /var/www/dlp.srv.world ServerName dlp.srv.world </VirtualHost> <VirtualHost *:443> SSLEngine on DocumentRoot /var/www/dlp.srv.world ServerName dlp.srv.world </VirtualHost>
[root@www ~]#
systemctl restart httpd
# 初回起動時は各設定のチェックが実行され # [MDStoreDir] に設定したディレクトリ内に起動のためのダミー証明書が作成される [root@www ~]# ll /etc/httpd/md/domains/dlp.srv.world total 12 -rw-------. 1 root root 1115 May 14 02:17 fallback-cert.pem -rw-------. 1 root root 1704 May 14 02:17 fallback-privkey.pem -rw-------. 1 root root 588 May 14 02:17 md.json # 問題なければ正規の証明書が取得される [root@www ~]# ll /etc/httpd/md/domains/dlp.srv.world total 16 -rw-------. 1 root root 3893 May 14 02:20 job.json -rw-------. 1 root root 633 May 14 02:20 md.json -rw-------. 1 root root 1704 May 14 02:20 privkey.pem -rw-------. 1 root root 3554 May 14 02:20 pubcert.pem |
[5] | 有効期限等々、証明書の確認は [openssl] コマンドで実施可能です。 または、[2] で設定した [md-status] にアクセスすることでも確認できます。 |
[root@www ~]# openssl s_client -connect www.srv.world:443 | openssl x509 -noout -startdate -enddate depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = www.srv.world verify return:1 notBefore=May 14 06:25:26 2020 GMT notAfter=Aug 12 06:25:26 2020 GMT[root@www ~]# openssl s_client -connect dlp.srv.world:443 | openssl x509 -noout -startdate -enddate depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 verify return:1 depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 verify return:1 depth=0 CN = dlp.srv.world verify return:1 notBefore=May 14 07:18:04 2020 GMT notAfter=Aug 12 07:18:04 2020 GMT |
Sponsored Link |