手当たり次第に書くんだ

飽きっぽいのは本能

CentOS 7 Apache TLS 設定 – Let’s Encrypt で HTTPS 化する

CentOS 7 は既にサポートが終了しています。このページは新規構築を推奨するものではなく、過去環境の保守、移行前調査、設定の読み解きに使うためのレガシー Linux 手順です。新規構築では、現在サポートされている Linux ディストリビューションを利用してください。

CentOS 7 サーバー管理ガイドへ戻る

CentOS 7 の Apache httpd で Let’s Encrypt の証明書を取得し、HTTPS を有効化する手順です。既存の公開 Web サーバーを保守する場合は、証明書の発行だけでなく、名前解決、HTTP 到達性、自動更新、Apache の再読み込みまでを一つの運用として確認します。

Let’s Encrypt は ACME によって証明書を自動発行します。webroot 方式では、対象ドメインの HTTP アクセスがこのサーバーに届き、認証用ファイルを外部から取得できることが前提になります。

前提を確認する

  • 対象 FQDN がこのサーバーの公開 IP に名前解決されること。
  • 80/tcp と 443/tcp が外部から到達できること。
  • Apache の DocumentRoot が明確で、ACME 認証用ファイルを配置できること。
  • CentOS 7 は保守対象の既存環境として扱い、新規構築の標準にはしないこと。

certbot をインストールする

yum install certbot python-certbot-apache

webroot 方式で証明書を取得する

既存の VirtualHost を大きく変えたくない場合は、webroot 方式で取得すると構成を読みやすく保てます。DocumentRoot は環境に合わせて変更します。

certbot certonly --webroot -w /var/www/html -d www.mydomain.com -d mydomain.com

発行されたファイルを確認する

Let’s Encrypt の /etc/letsencrypt/live 配下は、実体ではなく archive 配下へのシンボリックリンクです。Apache からは通常 live 配下を参照します。

ls -l /etc/letsencrypt/live/www.mydomain.com
cert.pem -> ../../archive/www.mydomain.com/cert1.pem
chain.pem -> ../../archive/www.mydomain.com/chain1.pem
fullchain.pem -> ../../archive/www.mydomain.com/fullchain1.pem
privkey.pem -> ../../archive/www.mydomain.com/privkey1.pem

Apache の TLS 設定を行う

ssl.conf は既存の TLS パラメータを含むため、丸ごと置き換えるより、バックアップを取ったうえで証明書参照先を確認して反映します。

cp -a /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak
ServerName www.mydomain.com:443
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.mydomain.com/chain.pem

Apache の設定を検証して反映する

apachectl configtest
systemctl reload httpd
systemctl status httpd

自動更新を確認する

Let’s Encrypt の証明書は期限が短いため、取得できたら終わりではありません。更新テストと、更新後に Apache が新しい証明書を読む流れまで確認します。

certbot renew --dry-run
systemctl list-timers | grep certbot

確認するポイント

  • 証明書の CN / SAN が公開 FQDN と一致しているか。
  • HTTP-01 認証に必要な 80/tcp が到達可能か。
  • 証明書更新後に Apache が再読み込みされる運用になっているか。
  • 古い TLS 設定をそのまま使っていないか。必要に応じて現行の Apache / OpenSSL の推奨設定と照合すること。

まとめ

CentOS 7 の Apache で Let’s Encrypt を使う場合、重要なのは証明書取得コマンドそのものより、名前解決、HTTP 到達性、Apache 設定、更新運用を一体で確認することです。既存環境を読むときも、どの FQDN をどの DocumentRoot で認証し、どの証明書を Apache が参照しているかを追うと追いやすくなります。

関連する記事

参考書籍

参考
書籍
参考書籍
Apache HTTP Server ポケットリファレンス

Apache HTTP Server の設定、ディレクティブ、モジュール、運用項目を確認したい場合の参考書籍です。古い 2.0 / 2.2 系対応書籍のため、価格や在庫、現在の Apache 2.4 との差分はリンク先や公式ドキュメントで確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

CentOS 7 Apache TLS 設定 – Let’s Encrypt で HTTPS 化する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る