SSLは中間証明書を設定すべし
SSLは中間証明書を設定することが基本となっている。漏れがあっても暗号化はされ、一見見逃し気味なので注意が必要だ。
SSLCertificateFile /etc/httpd/ssl/www2025.crt
SSLCertificateKeyFile /etc/httpd/ssl/www2025.key不十分かもしれない。
-rw-r--r-- 1 root root 1688 May 26 2025 www2025.cer
-rw-r--r-- 1 root root 2236 May 26 2025 www2025.crt
-rw-r--r-- 1 root root 1115 May 26 2025 www2025.csr
-rw-r--r-- 1 root root 1675 May 26 2025 www2025.key中間証明書が分かれているwww2025.cer
# cd /etc/httdp/ssl/
# cat www2025.crt www2025.cer > www2025_fullchain.crt
# vi /etc/httpd/www.conf
-+ SSLCertificateFile /etc/httpd/ssl/www_fullchain.crtフルチェーンを用意し、SSLの証明書ファイルを指定する
サーバー証明書をブラウザやOSが信頼するために必要な「証明書チェーン」を完成させる役割を持つためです。中間証明書が欠けると、多くの環境で「安全ではありません」「証明書が信頼されていません」といったエラーが発生する場合があります。
🔍 中間証明書が必要な理由
- 信頼の連鎖(証明書チェーン)を構築するため サーバー証明書 → 中間証明書 → ルート証明書という階層構造で信頼が成立します。 中間証明書がないと、ブラウザはルート証明書まで辿れず「信頼できない」と判断します。
- ルート証明書を直接使わないための安全設計 ルート証明書は非常に重要で、直接サーバー証明書を署名するとリスクが大きいため、中間証明書が間に入る構造になっています。
- 管理・更新の柔軟性のため 中間証明書を使うことで、CAは用途別に証明書を管理しやすくなり、問題発生時の影響範囲も限定できます。
⚠️ 中間証明書を設定しないと起こるトラブル
- ブラウザ警告が出る(Chrome/Safari/Edge など) 「この接続は安全ではありません」「証明書が信頼されていません」など。
- スマホだけ接続できない問題 PCでは繋がるのにスマホでエラーになる典型的な原因。
- API通信・メール送信(SMTP)などが失敗 サーバー間通信でも証明書チェーンが不完全だと検証エラーになります。
- TLSハンドシェイクが失敗する 中間証明書がないと「発行元不明」と判断され、通信が確立しません。
🛠️ 正しい設定のポイント
- CAから提供される bundle.crt / ca-bundle.crt を必ず設定する
- Apache:
SSLCertificateChainFileなどで中間証明書を指定 - Nginx:
fullchain.crt(サーバー証明書+中間証明書)を設定
