CentOS 7 は既にサポートが終了しています。このページは新規構築を推奨するものではなく、過去環境の保守、移行前調査、設定の読み解きに使うためのレガシー Linux 手順です。新規構築では、現在サポートされている Linux ディストリビューションを利用してください。
CentOS 7 の Apache httpd で、自己署名証明書を使って HTTPS を有効化する手順です。公開サイト向けではなく、内部向け Web UI、検証環境、管理画面などを TLS 化する場合の設定として整理します。
自己署名証明書は、暗号化そのものには使えますが、クライアントが信頼する CA として扱わなければブラウザー警告が出ます。内部向け TLS では、証明書を作ることだけでなく、どの端末に CA を配布し、どの名前でアクセスさせるかまでが設計範囲です。
使いどころを整理する
- 外部公開サイトではなく、内部向けの管理画面や検証環境で使う。
- アクセスするホスト名と証明書の CN / SAN を一致させる。
- 内部 CA を信頼させる端末や用途を限定する。
- 秘密鍵の権限を広げない。
証明書配置ディレクトリを用意する
mkdir -p /var/lib/pki証明書と秘密鍵を配置する
ここでは、事前に作成済みのサーバー証明書と秘密鍵を配置する前提にしています。秘密鍵は Apache が読める範囲に限定し、不用意に一般ユーザーから読めないようにします。
cp server.crt /var/lib/pki/server.crt
cp server.key /var/lib/pki/server.key
chmod 400 /var/lib/pki/server.key
chmod 444 /var/lib/pki/server.crtApache の TLS 設定を行う
ssl.conf には既存の TLS パラメータが含まれるため、バックアップを取ったうえで証明書参照先を整理します。
cp -a /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bakServerName host01.mydomain.com:443
SSLCertificateFile /var/lib/pki/server.crt
SSLCertificateKeyFile /var/lib/pki/server.keyApache を再起動する
apachectl configtest
systemctl restart httpd
systemctl status httpdクライアント側で確認する
自己署名証明書を使う場合、サーバー側だけで完結しません。利用端末が内部 CA を信頼しているか、アクセス URL のホスト名と証明書の SAN が一致しているかを確認します。
openssl s_client -connect host01.mydomain.com:443 -servername host01.mydomain.com </dev/null確認するポイント
- 自己署名証明書を公開サイト用途に使っていないか。
- 秘密鍵が広い権限で読める状態になっていないか。
- 証明書の名前とアクセスする FQDN が一致しているか。
- 内部 CA の配布範囲が運用上説明できるか。
まとめ
自己署名証明書による HTTPS 化は、内部向けの暗号化としては有効ですが、信頼配布と名前設計を省略すると運用しづらくなります。CentOS 7 の既存環境を保守する場合も、証明書ファイルだけでなく、CA、SAN、秘密鍵権限、Apache の参照先をセットで確認することが重要です。
関連する記事
- CentOS 7 サーバー管理ガイド
CentOS 7 系の記事をまとめたハブページです。 - CentOS 7 ネットワーク設定 – network サービスと ifcfg の既存運用
Web / DNS サーバーの前提になる固定 IP や ifcfg 設定を確認します。 - CentOS 7 Apache TLS 設定 – Let’s Encrypt で HTTPS 化する
公開サイトで Let’s Encrypt を使う場合の確認点です。
参考書籍
書籍
Apache HTTP Server の設定、ディレクティブ、モジュール、運用項目を確認したい場合の参考書籍です。古い 2.0 / 2.2 系対応書籍のため、価格や在庫、現在の Apache 2.4 との差分はリンク先や公式ドキュメントで確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

