はじめに
この章では、本記事の目的と読者像、全体の流れをわかりやすく説明します。
目的
SSLの中間証明書(チェーンの一部)がどういう役割を持ち、なぜ確認が必要かを丁寧に解説します。具体的には、ブラウザやOpenSSLでの確認手順、ローカルファイルの整合性チェック、CAのオンラインツールを使った検証方法まで順を追って説明します。
読者想定
ウェブサイトの管理者や運用担当者、SSLの初歩を学びたい方を想定しています。難しい専門用語は少なくし、具体例を使って説明します。
本記事の流れ
- 中間証明書とは何か(役割を簡潔に説明)
- なぜ確認が重要か(エラー発生の原因と影響)
- ブラウザでの確認方法
- OpenSSLでのリモート確認
- ローカルファイルの整合性確認
- CAのオンラインツールでの検証
次章から順に手順やコマンド、画面での確認方法を丁寧に紹介します。実際の操作に沿って進めるので、初心者の方も安心して読み進めてください。
1. SSLの中間証明書とは何か
簡単な説明
中間証明書(中間CA証明書)は、サーバー証明書とルート認証局(CA)証明書の間に入る「つなぎ」の証明書です。ルートCAが直接サーバー証明書に署名する代わりに、中間CAが署名して発行します。
役割をやさしく例えると
中間証明書は橋のような存在です。サーバー証明書が渡る橋を支える中間CAがあるため、ブラウザはその先にあるルートCAまで信頼をたどれます。
なぜ使うのか(利点)
- セキュリティ向上:ルートCAの秘密鍵をオフラインに保てます。
- 管理しやすさ:複数の中間CAで発行を分担できます。
実務で見るポイント
- サーバーは通常、サーバー証明書に中間証明書をつないで(チェーンとして)送信します。
- ブラウザはこのチェーンを順に検証して正当性を確認します。
補足(注意点)
中間証明書が正しく設定されないと、ブラウザで「安全ではない」と表示されることがあります。サーバー設定でチェーンが含まれているか必ず確認してください。
2. なぜ中間証明書の「確認」が重要なのか
なぜ重要なのか
中間証明書はサーバー証明書とルート証明書をつなぐ役割を果たします。ここが抜けていると、ブラウザや検証ツールが正しく信頼チェーンをたどれません。その結果、見た目には安全でもエラーが出ることがあります。
起こる具体的な問題
- ブラウザで「この接続は保護されていません」と表示される。例:あるブラウザでは鍵アイコンが出るが、別のブラウザではエラーになることがあります。
- OpenSSLなどで検証すると「verify error」になる。これは中間証明書が提示されていないためです。
いつ確認するべきか
- 証明書を新しく発行・更新した直後
- サーバー移行や構成変更を行ったとき
- 利用者から証明書エラーの報告があったとき
対処のポイント
- サーバーに中間証明書を連結して配置する(多くのCAは連結済みファイルを提供します)。
- 複数のブラウザやツールで確認する。DigiCertも中間証明書未設定を典型的な原因として挙げています。
この章では、まず問題の起き方と確認のタイミングを押さえます。次章で実際の確認手順を説明します。
3. ブラウザでの中間証明書の確認方法
- はじめに
ブラウザ(例:Chrome、Firefox)から簡単に証明書チェーンを確認できます。鍵マークや住所バーのアイコンを使うと、視覚的にチェーンの状態を把握できます。
-
Chromeでの基本手順
-
サイトにアクセスして左上の鍵マークをクリックします。
- 「接続は保護されています」などの表示を選び、「証明書(有効)」をクリックします。
- 証明書ビューアが開き、ツリーで「サーバー証明書 → 中間CA → ルートCA」の順に表示されます。
-
各証明書を選ぶと有効期限や発行者(Issuer)、サブジェクト(Subject)を確認できます。
-
FirefoxやEdgeの場合
操作は似ています。Firefoxではアドレスバーの鍵マークをクリックし「接続保護の詳細」→「証明書を表示」と進みます。EdgeもChromeとほぼ同様です。
- 見るべきポイント(具体例つき)
・中間証明書が表示されるか:ツリーに中間CAがなければ不完全なチェーンです。例:サイト証明書 → 中間CA1 → ルート。
・順序の確認:上から下へサーバー→中間→ルートの順になっているか確認します。
・有効期限:期限切れがないか確認します。
・警告表示:鍵マークが赤や斜線の場合はチェーン不備や期限切れの可能性があります。
- ブラウザ確認の限界
ブラウザはユーザー向けに簡潔に表示します。中間証明書の詳細な配布方法やサーバー側の設定(送信されている中間証明書の数や順序)までは完全に把握できない場合があります。そのため、より厳密な検証にはOpenSSLなどのコマンドラインツールでの確認もおすすめします。
4. OpenSSLでの中間証明書の確認方法(リモートサーバ)
概要
リモートのWebサーバへ直接接続して、サーバーが送る証明書チェーンを確認します。opensslのs_clientで全証明書を表示し、各証明書のSubject/Issuerを確認して整合性を確かめます。
手順(簡単)
- 証明書チェーンを取得する
echo | openssl s_client -connect example.com:443 -servername example.com -showcerts 2>/dev/null
この出力に—–BEGIN CERTIFICATE—–から—–END CERTIFICATE—–の塊が複数あれば、中間証明書がサーバーから送信されています。
- 各証明書のSubjectとIssuerを確認する
echo | openssl s_client -connect example.com:443 -servername example.com -showcerts 2>/dev/null \
| sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' \
| csplit -f cert- - '/-----BEGIN CERTIFICATE-----/' '{*}' >/dev/null 2>&1
openssl x509 -in cert-00 -noout -subject -issuer
- 対応をチェックする
サーバー証明書のIssuerと、次の中間証明書のSubjectが一致すれば正しくつながっています。中間証明書が不足すると、接続時に検証エラー(例: unable to get local issuer certificate)が出ることがあります。
補足
不足が分かったら、サーバー側でサーバー証明書と中間証明書を連結したチェーンファイルを設定する必要があります。設定方法はサーバーソフトによって異なりますが、管理者に連絡するとよいです。
5. ローカルファイルとしての中間証明書の整合性確認
なぜローカルで確認するか
証明書を更新する前にローカルで組み合わせを確認すると、サーバーでの障害を防げます。サーバー証明書・中間証明書・秘密鍵の組み合わせを事前に検証してください。簡単な照合でミスマッチに気づけます。
発行者(Issuer)と対象(Subject)のハッシュ比較
基本的な方法は、サーバー証明書のIssuerハッシュと中間証明書のSubjectハッシュを比べることです。コマンド例を示します。
- サーバー証明書からIssuerハッシュを取得
openssl x509 -noout -issuer_hash -in server.crt
- 中間証明書からSubjectハッシュを取得
openssl x509 -noout -subject_hash -in intermediate.crt
これらが一致すれば、中間とサーバーの対応関係が正しい可能性が高いです。ファイル名の差分確認にはdiffを使えますが、シェルで直接比較する方が確実です。
シンプルな比較スクリプト例
以下は複数の証明書をまとめてチェックする簡単なシェル例です。
iss=$(openssl x509 -noout -issuer_hash -in server.crt)
sub=$(openssl x509 -noout -subject_hash -in intermediate.crt)
if [ "$iss" = "$sub" ]; then
echo "IssuerとSubjectが一致しています"
else
echo "一致しません。中間証明書を見直してください"
fi
証明書チェーン全体の一括検証
中間証明書が複数ある場合は、チェーンをまとめて検証します。中間とルートを結合してCAファイルを作り、openssl verifyで確認できます。
cat intermediate.crt root.crt > chain.pem
openssl verify -CAfile chain.pem server.crt
この結果でエラーが出なければ、ローカルでの組み合わせは概ね正しいと判断できます。トラブル時はファイルの順序や改行、PEMヘッダの有無を再確認してください。
6. CA(認証局)のオンラインツールで確認する方法
概要
公開されているオンライン診断ツールに対象ドメインを入力すると、サーバー証明書からルート証明書までのチェーン状態を一覧で確認できます。DigiCertのチェックやSSL Labsなどがよく使われます。
操作手順
- ツールにアクセスして、検査するホスト名(例: example.com)を入力します。
- スキャンを実行します(数秒〜数分かかる場合があります)。
- 結果画面で「サーバー証明書」「中間証明書」「ルート証明書」の順に表示を確認します。中間証明書が欠けていると「チェーン不完全」や「中間証明書が未設定」と明示されます。
結果の見方と対処法
- 中間証明書が表示されない/チェーン不完全:CAのサイトから中間証明書(またはバンドル)を入手し、サーバーの設定に追加します(ApacheならSSLCertificateChainFileまたはfullchain.pem、nginxならfullchain.pemなど)。証明書を追加後、サーバーを再起動して再スキャンしてください。
- 証明書の有効期限やホスト名不一致も同時に表示されることがあります。期限切れや名前不一致があれば、更新または設定修正が必要です。
補足
一部ツールは証明書ファイルをアップロードして検査できます。公開環境での動作確認が重要なので、外部ツールでのチェックを習慣にすると安心です。












