サーバー証明書自動更新設定手順
UCIDMのWebサーバーの証明書をACMEプロトコルで自動更新する手順を説明します。
前提条件
設定手順を説明するにあたって、以下の条件を前提とします。
- OSはRHEL系を利用していること
- WebサーバーはApache HTTPD サーバーを利用していること
- ACMEクライアントには
mod_mdを利用すること
設定手順概要
設定手順はおおまかに以下の通りです。
- 事前準備
mod_mdのインストールmod_mdの設定- 証明書の取得
事前準備
mod_md を利用するためには、Webサーバーに外部からHTTP/HTTPSでアクセスできる必要があります。
また、証明書を取得するドメイン名が、DNSで正しく引ける必要があります。
DNS設定やファイアウォール設定を事前に確認してください。
また、Apache HTTPDサーバーや、UCIDMの設定は事前に行ってください。
mod_md のインストール
以下のコマンドで mod_md をインストールします。
以下のコマンドで mod_md がロードされていることを確認してください。
mod_md の設定
mod_md の設定を行います。
ここでは /etc/httpd/conf.d/md.conf に mod_md の設定を追加します。
MDContactEmailは証明書に関連する連絡先メールアドレスを指定します。MDomainは証明書を取得するドメイン名を指定します。複数のドメイン名を指定する場合はスペースで区切ってください。MDCertificateAuthorityは利用するACME認証局のURLを指定します。- ACME認証局のURL例は以下になります。
また、UPKI電子証明書発行サービスのような、EAB Credentialが必要なACME認証局を利用する場合は、以下の設定も追加してください。
/etc/httpd/conf/httpd.conf も編集します。
すでに SSLCertificateFile や SSLCertificateKeyFile が設定されている場合はコメントアウトしてください。
mod_md が証明書の取得に合わせて、読み込みまで行ってくれるので、これらの設定は不要になります。
また、ACMEプロトコルでは80番ポートをリッスンすることが必須になります。 そのため、80番ポートから443番ポートへのHTTPS通信へリダイレクトする設定を追加することを推奨します。
mod_md のログを確認するには info 以上のログレベルが必要になります。
/etc/httpd/conf/httpd.conf に以下の設定を追加してください。
すべての設定が完了したら、以下のコマンドでエラーが出ないことを確認してください。
証明書の取得
mod_md の設定が完了したら、Apache HTTPDサーバーは次回起動時に自動で証明書の取得を行います。
また mod_md は最初に、証明書を取得するためのHTTPS通信に利用する、一時的な自己署名証明書を自動で生成します。
そのため実際に公的な証明書を取得するには、Apache HTTPDサーバーを2回再起動する必要があります。
1度目の再起動を行います。
/etc/httpd/state/md/domains/<ドメイン名>/ に自己署名証明書が生成されていることを確認してください。
2度目の再起動を行います。
/etc/httpd/state/md/domains/<ドメイン名>/ に公的な証明書が生成されていることを確認してください。
ブラウザからアクセスし、証明書が正しく取得されていることを確認してください。
証明書の自動更新
mod_md では mod_watchdog というモジュールを利用して、定期的に証明書の有効期限を確認し、必要に応じて自動更新を行います。
そのため cron などで定期的にスクリプトやコマンドを実行する必要はありません。
mod_md が証明書を更新した際は error_log にログが出力されます。
以下のようなログが出力されていれば、自動更新が正常に動作しています。