CSR.pluscsr.plus
← 記事一覧へ戻る
トラブルシューティング2026-08-15•4 分で読める

TLS バージョン・暗号の不一致: ネゴシエーション失敗

· CSR.plus チーム

TLS バージョン・暗号の不一致: ネゴシエーション失敗
  • •「no shared cipher」やバージョンエラーでの握手失敗は、両者が互換性のある TLS オプションを何も共有していないことを意味します。
  • •サーバーが有効化しているバージョンとスイートを、クライアントの対応状況と突き合わせます。
  • •モダンで広い組み合わせを有効化: 標準 ECDHE AES-GCM スイートで TLS 1.2 + 1.3。
No shared cipher
典型的なメッセージ
openssl s_client の出力
TLS 1.2
モダン最小
1.2 + 1.3 を有効化
ECDHE
鍵交換
P-256 または X25519
TLS 1.0/1.1
レガシークライアント
主要ブラウザで廃止

「no shared cipher」の意味

ネゴシエーション中、クライアントは対応スイートを送信し、サーバーは自分も対応するものを選択します。共通部分が空なら、OpenSSL は「no protocols available」または「no shared cipher」を報告します。ブラウザでは同じ原因が ERR_SSL_VERSION_OR_CIPHER_MISMATCH として現れます。TLS 1.3 とモダンスイートのみのサーバーに旧クライアントが接続するのが典型的な引き金です。

openssl 出力の読み方

openssl s_client -connect host:443 -servername host は成功時に「Protocol : TLSv1.3」と「Cipher : TLS_AES_256_GCM_SHA384」を出力します。失敗時は「no protocols available」(バージョンギャップ)か「no shared cipher」。openssl ciphers -v でビルドが提供するスイートを確認し、s_client -tls1_2 / -tls1_3 で各バージョンを個別にテストします。

正しいサーバー設定

TLS 1.2 と 1.3 を有効化し、それ以下を無効化します。標準モダンスイートを維持:1.3 は TLS_AES_256_GCM_SHA384 と TLS_AES_128_GCM_SHA256、1.2 は ECDHE-ECDSA/ECDHE-RSA と AES-256-GCM・AES-128-GCM。本当に旧クライアントをサポートする場合のみレガシースイートを追加し、トレードオフを記録します。

FAQ

旧デバイスに TLS 1.0/1.1 は必要ですか?

主要ブラウザと OS はすべて TLS 1.0/1.1 を無効化しています。古い組み込み機器への対応は互換性判断です — 必要な場合はそれらのクライアントを別 vhost に隔離しましょう。

HTTP/3 は旧クライアントを助けますか?

いいえ — HTTP/3 は QUIC/TLS 1.3 上で動き、旧クライアントは対応していません。HTTP/2 と HTTP/3 は共存し、ネゴシエーションの問題は TLS 層にあります。

UptimeRobot

SSL と稼働状況を無料で監視

UptimeRobot が証明書とエンドポイントを 24 時間 365 日監視——無料プランで 50 モニター。

UptimeRobot を無料で試す

アフィリエイトリンク——追加費用なしで当サイトが手数料を受け取ることがあります。

無料の SSL/TLS ツール

数秒で証明書を検証・検査。

関連記事