SSL 握手失敗: 11 の原因と修正方法
· CSR.plus チーム

- •握手の失敗はほぼ常に 11 の原因のいずれかに起因します:証明書、暗号、SNI、プロトコル、ネットワーク層。
- •順に診断:期限切れ、ホスト名一致、チェーン完全性、次に TLS バージョンと暗号。
- •ほとんどの握手失敗は、正しい中間チェーンまたは対応暗号スイートで修正できます。
握手失敗時に実際に起きていること
TLS 握手中、クライアントとサーバーはプロトコルバージョン、暗号スイート、有効な証明書チェーンで合意する必要があります。どのステップで失敗しても接続は中断します。一般的な失敗点:証明書の期限切れ、証明書がカバーしないホスト名、不完全なチェーン(サーバーが中間証明書なしでリーフのみ送信)、未対応の TLS バージョン、暗号の不一致、SNI 欠落、ClientHello を破棄するファイアウォール/NAT。
1分以内の診断方法
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com を実行し出力を読みます。「Verify return code: 0」ならチェーンは正常。「unable to get local issuer certificate」は中間証明書の欠落。「no peer certificate available」または CONNECTED 後の空行は、サーバーが握手を完了しなかったことを意味します — プロトコルまたは暗号の問題。ブラウザのコンソールエラーがクライアント側の視点を補足します。
最も頻度の高い 5 つの原因の修正
1) 中間証明書の欠落:CA バンドルを取得し、リーフ+中間を正しい順序で連結。2) 暗号の不一致:TLS_AES_256_GCM_SHA384(TLS 1.3)や ECDHE-RSA-AES256-GCM(TLS 1.2)などの一般的なスイートを有効化。3) TLS バージョン:サーバーで TLS 1.2 と 1.3 を有効化し、それ以下を無効化。4) ホスト名/SNI:証明書が正確なホスト名を含み、SNI が有効であることを確認。5) ネットワーク:ポート 443 が開いているか、ロードバランサーや CDN が独自設定で TLS を終端していないか確認。
FAQ
ブラウザでは握手が失敗するのに curl では成功するのはなぜ?
クライアントごとに受け入れる TLS バージョンと暗号スイートが異なります。curl は成功するのに古いブラウザで失敗する場合、クライアントが交渉したバージョンをサポートしていません — 最低限 TLS 1.2 を有効化してください。
ファイアウォールが握手失敗の原因になりますか?
はい。一部のファイアウォールや NAT は大きな ClientHello パケットを破棄したり TCP ポートを静かにブロックします。非標準ポートやパケットキャプチャで確認してください。
UptimeRobot
SSL と稼働状況を無料で監視
UptimeRobot が証明書とエンドポイントを 24 時間 365 日監視——無料プランで 50 モニター。
アフィリエイトリンク——追加費用なしで当サイトが手数料を受け取ることがあります。
無料の SSL/TLS ツール
数秒で証明書を検証・検査。