Apache で TLS を設定する時、中間証明書をどのディレクティブで指定するかは、Apache のバージョンによって考え方が変わります。古い設定では SSLCertificateChainFile を使っていましたが、現在はサーバー証明書ファイルに中間証明書を連結して SSLCertificateFile で指定する構成が基本です。
従来の書き方
従来は、サーバー証明書、秘密鍵、中間証明書を別々に指定していました。
SSLCertificateFile /etc/pki/mypki/www.example.com.crt
SSLCertificateKeyFile /etc/pki/mypki/www.example.com.key
SSLCertificateChainFile /etc/pki/mypki/intermediate.example.crtこの構成では、中間証明書が必要な証明書と不要な証明書で設定の扱いが変わり、管理が少し面倒になります。
現在の考え方
現在は、サーバー証明書ファイルに中間証明書を連結し、SSLCertificateFile でまとめて指定します。秘密鍵は従来通り SSLCertificateKeyFile で指定します。
-----BEGIN CERTIFICATE-----
server certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
intermediate certificate
-----END CERTIFICATE-----SSLCertificateFile /etc/pki/mypki/www.example.com.fullchain.crt
SSLCertificateKeyFile /etc/pki/mypki/www.example.com.key確認すること
設定後は、Apache が起動するかだけでなく、クライアントに正しい証明書チェーンが提示されているかを確認します。Chrome だけでエラーになるような場合は、中間証明書の不足やチェーン順序の問題が隠れていることがあります。
openssl s_client -connect www.example.com:443 -servername www.example.com -showcertsまとめ
Apache の TLS 設定では、サーバー証明書と中間証明書をまとめた fullchain 形式の証明書ファイルを SSLCertificateFile に指定する構成が扱いやすくなります。重要なのは、設定ファイル上で指定できていることではなく、実際にクライアントへ正しい証明書チェーンを提示できていることです。
書籍
暗号技術入門 第3版 秘密の国のアリス
公開鍵暗号、電子署名、証明書など、TLS や内部 PKI の前提になる暗号技術を確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。



