「HTTPSに接続できない」
「証明書エラーが出て通信が確立しない」
「FWやLBを通すとSSL通信だけ失敗する」
これらのトラブルは、SSL/TLS通信の仕組みと証明書の役割を理解すると、 論理的に原因を切り分けられます。
本記事では、SSL/TLS通信が失敗する代表的な原因と、 実務で使える診断手順・確認コマンド・結果の読み方を解説します。
目次
SSL/TLS通信の基本構造
SSL/TLS通信は、大きく次のフェーズで構成されます。
- TCPコネクション確立(3ウェイハンドシェイク)
- TLSハンドシェイク
- 暗号化通信開始
証明書トラブルは②のTLSハンドシェイクで発生します。
TLSハンドシェイクで行われていること
- サーバ証明書の提示
- 証明書チェーンの検証
- 有効期限・CN/SANの確認
- 暗号スイートの合意
このどこかで失敗すると、SSL/TLS通信は確立しません。
SSL/TLS通信が失敗する代表的な原因
① 証明書の有効期限切れ
- ブラウザで警告が表示される
- 突然通信できなくなる
最も多い原因です。
② CN / SAN 不一致
証明書に記載されたホスト名と、アクセス先URLが一致しない場合、 検証エラーになります。
- CN: www.example.com
- アクセス: api.example.com
③ 中間証明書の欠落
サーバ証明書だけを設定し、 中間CA証明書を設定していないケースです。
- 一部クライアントだけ接続不可
- OSやブラウザ依存で失敗
④ 信頼されていない認証局(CA)
- 自己署名証明書
- 社内CAをクライアントが信頼していない
クライアント側の信頼ストア確認が必要です。
⑤ TLSバージョン不一致
- サーバ:TLS1.2のみ許可
- クライアント:TLS1.0のみ対応
レガシー機器で頻出します。
⑥ 暗号スイート不一致
共通で利用可能な暗号方式がない場合、 ハンドシェイクは失敗します。
確認手順①:TCPレベルの疎通確認
telnet <IP> 443
結果例
- 接続できない → FW/経路問題
- 接続できる → SSL/TLS層の問題
確認手順②:openssl による証明書確認
openssl s_client -connect example.com:443
確認ポイント
- 証明書チェーンが最後まで表示されるか
- Verify return code: 0 (ok) になっているか
よくあるエラー表示と意味
- certificate has expired:有効期限切れ
- unable to get local issuer certificate:中間証明書不足
- hostname mismatch:CN/SAN不一致
FW・LBが絡む場合の注意点
- SSLインスペクション有無
- 証明書の再署名
- クライアント側の信頼CA設定
FW/LBがSSL通信を終端しているかを必ず確認します。
実務での切り分けフロー
- TCP 443 接続確認
- openssl で証明書検証
- CN/SAN・期限確認
- 中間証明書確認
- TLS/暗号スイート確認
改善後の結果例
- SSLエラーが解消
- ブラウザ警告が消える
- API通信が安定
まとめ
- SSL/TLSトラブルの多くは証明書起因
- opensslは最強の診断ツール
- FW/LBが絡むと複雑化しやすい
SSL/TLS通信は「ブラックボックス」に見えがちですが、 構造を理解すれば容易に切り分け可能です。
あわせて読みたい


VPN の種類と仕組み(IPSec / SSL / OpenVPN)
VPN(Virtual Private Network:仮想専用線)は、インターネットなどの公衆ネットワークを通じて、安全にデータをやり取りするための技術です。 企業ネットワークの拠点…
あわせて読みたい


証明書更新作業で失敗しないチェックリスト【期限切れ・通信断を防ぐ実務手順】
「証明書更新後にHTTPSがつながらなくなった」「期限は更新したはずなのに通信エラーが出る」「夜間作業後、翌朝に障害が発覚した」 証明書更新は一見単純に見えますが…
