中間証明書不足で通信が失敗する理由とは?【SSL/TLSが突然つながらない原因】

  • URLをコピーしました!

「一部の端末だけHTTPSに接続できない」
「ブラウザでは警告が出るが、他の環境では問題ない」
「証明書は正しく設定したはずなのに通信が失敗する」

これらのトラブルの原因として非常に多いのが、 中間証明書(Intermediate Certificate)の不足・設定漏れです。

本記事では、中間証明書不足で通信が失敗する仕組みを、 証明書チェーンの考え方・症状・確認方法・実務での対処手順まで含めて解説します。

目次

証明書チェーンとは何か

SSL/TLS通信では、証明書は単体ではなく「チェーン(連鎖)」で検証されます。

証明書チェーンの構成

  • ルート証明書(Root CA)
  • 中間証明書(Intermediate CA)
  • サーバ証明書(Server Certificate)

クライアントは、 サーバ証明書 → 中間証明書 → ルート証明書 の順で信頼性を検証します。

中間証明書の役割

中間証明書は、ルートCAとサーバ証明書をつなぐ「橋渡し」の役割を持ちます。

  • ルートCAを直接使わず安全性を高める
  • 複数のサーバ証明書を発行・管理

この中間証明書が欠けると、証明書チェーンが途中で切れてしまいます。

なぜ中間証明書不足で通信が失敗するのか

クライアントは通常、サーバから送られてきた証明書チェーンを使って検証します。

しかし、 サーバ側が中間証明書を送信していない場合、 クライアントは次の状態になります。

  • サーバ証明書の発行元が分からない
  • 信頼チェーンを最後まで辿れない

結果として、TLSハンドシェイクが失敗します。

よくある症状

  • 特定のOS・ブラウザのみ接続不可
  • モバイル端末でだけエラー
  • opensslでは失敗するが一部ブラウザでは成功

これは、クライアント側に中間証明書がキャッシュされているかどうかの差で発生します。

代表的なエラーメッセージ

  • unable to get local issuer certificate
  • certificate chain incomplete
  • unknown CA

確認手順①:opensslで証明書チェーン確認

openssl s_client -connect example.com:443

確認ポイント

  • 証明書が複数段表示されるか
  • Verify return code: 0 (ok) になっているか

中間証明書が不足している場合、 Verify return code がエラーになります。

確認手順②:証明書段数の確認

正常な例:

  • depth=2(Root CA)
  • depth=1(Intermediate CA)
  • depth=0(Server Certificate)

中間証明書不足の例:

  • depth=1(Root CA)
  • depth=0(Server Certificate)

よくある設定ミス

  • サーバ証明書のみ設定している
  • 中間証明書を別ファイルで指定していない
  • 古い中間証明書を使い続けている

正しい対処方法

① 中間証明書を含めたチェーン設定

  • サーバ証明書
  • 中間証明書(すべて)

WebサーバやLBでは、 フルチェーン(fullchain)設定が推奨されます。

② 再起動・再読み込みの実施

  • Webサーバ再起動
  • LBの証明書再適用

設定反映漏れも非常に多いポイントです。

改善後の結果例

  • すべての端末でHTTPS接続成功
  • 証明書エラー消失
  • API通信が安定

実務での運用ポイント

  • 証明書更新時は必ず中間証明書も更新
  • opensslでの事前・事後確認をルール化
  • 検証環境での確認を必須化

まとめ

  • 証明書はチェーンで考える
  • 中間証明書不足は非常に多い原因
  • openssl確認でほぼ確実に検知可能

中間証明書不足は、 「設定したつもり」でも起こる典型トラブルです。 仕組みを理解しておけば、短時間で確実に切り分けられます。

目次