ERR_SSL_VERSION_OR_CIPHER_MISMATCH の直し方(Chrome・Edge・全ブラウザ対応)

ERR_SSL_VERSION_OR_CIPHER_MISMATCH とは?
ERR_SSL_VERSION_OR_CIPHER_MISMATCH は、SSL/TLSハンドシェイク中にブラウザとWebサーバーが共通のTLSプロトコルバージョンまたは暗号化暗号スイートに合意できない場合に表示されるブラウザエラーです。安全なチャネルが確立できないため、ブラウザは接続を完全にブロックします。
すべてのHTTPS接続はTLSハンドシェイクから始まります。このハンドシェイクで、ブラウザはサポートするTLSバージョンと暗号スイートのリスト(ClientHelloと呼ばれる)を送信します。サーバーはその中から自身もサポートするものを1つ選んで応答します(ServerHello)。もし共通点がゼロの場合 — サーバーがブラウザが非推奨としたか認識しないプロトコルや暗号しか提供しない場合 — ハンドシェイクは即座に失敗し、このエラーが表示されます。
Chromiumの内部エラーコードは net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH です。Firefoxでは同じ問題が SSL_ERROR_NO_CYPHER_OVERLAP として表示されます。どちらも同じ意味で、クライアントとサーバーの間に安全な接続のための共通基盤がないことを示しています。
各ブラウザでのエラー表示
同じTLSネゴシエーションの失敗でも、ブラウザによって異なるエラーメッセージが表示されます。Chromeの完全なエラーメッセージは次のようになります:「このサイトは安全に接続できません。[ドメイン]はサポートされていないプロトコルを使用しています。」
| ブラウザ | エラーメッセージ | エラーコード |
|---|---|---|
| Chrome / Edge / Brave / Opera | このサイトは安全に接続できません — サポートされていないプロトコルを使用しています | ERR_SSL_VERSION_OR_CIPHER_MISMATCH |
| Firefox | 安全な接続ができませんでした — 通信相手と安全に通信できません:共通の暗号化アルゴリズムがありません | SSL_ERROR_NO_CYPHER_OVERLAP |
| Safari | Safariはページを開けません。サーバーへの安全な接続を確立できません | 特定のコードなし |
| cURL / OpenSSL | no protocols available / no ciphers available | SSL routines error |
ERR_SSL_VERSION_OR_CIPHER_MISMATCH の原因
このエラーにはサーバー側とクライアント側の両方の原因があります。特定の1つのWebサイトでのみエラーが表示される場合、問題はほぼ確実にサーバー側にあります。多くのWebサイトで表示される場合は、あなたのデバイスまたはネットワークに原因があります。
サーバーが非推奨のTLS 1.0またはTLS 1.1を使用 — Chrome、Edge、Firefox、Safariはいずれも2020年にTLS 1.0と1.1のサポートを廃止しました。サーバーがこれらの古いプロトコルのみを提供している場合、最新のブラウザは接続を拒否します。これがサーバー側の原因の第1位です。
弱いまたは非推奨の暗号スイート — RC4(2016年のChrome 48で削除)、3DES、エクスポートグレードの暗号はすべての最新ブラウザでブロックされています。サーバーがこれらしか提供しない場合、ハンドシェイクは失敗します。
SHA-1で署名された証明書 — ブラウザは2017年にSHA-1証明書の信頼を停止しました。証明書がSHA-256ではなくSHA-1を使用している場合、拒否されます。
SSL証明書の期限切れ — 期限切れの証明書は、他の設定ミスと組み合わさると、一般的なERR_CERT_DATE_INVALIDではなく、このエラーを引き起こすことがあります。
証明書のドメイン名不一致 — SSL証明書が
example.comに対して発行されているが、サイトがwww.example.com(または証明書でカバーされていないサブドメイン)でアクセスされている場合。不完全な証明書チェーン — 中間証明書が欠落していると、ブラウザが信頼の連鎖を検証できません。詳しくはSSL証明書チェーンガイドをご覧ください。
Cloudflare/CDNの設定ミス — Cloudflareを使用している場合、SSL証明書がまだ有効化されていない(最大24時間かかる)、DNSレコードがProxiedではなくDNS-onlyに設定されている、またはマルチレベルサブドメインがUniversal証明書でカバーされていない可能性があります。
古いオペレーティングシステム — Windows XP、Android 4.x、その他のレガシーOSはTLS 1.2や最新の暗号スイートをサポートしていないため、それらを要求するサーバーに接続できません。
ウイルス対策ソフトのHTTPSスキャン — Avast、Kaspersky、BitdefenderなどのセキュリティソフトがHTTPS接続を独自の証明書で傍受し、暗号スイートの不一致を引き起こすことがあります。
ブラウザまたはデバイスの更新が必要 — 非常に古いバージョンのブラウザは、サーバーが要求する暗号スイートをサポートしていない場合があります。
ERR_SSL_VERSION_OR_CIPHER_MISMATCH の直し方(ユーザー向け)
ブラウジング中にこのエラーが表示された場合、Webサイトのサーバー側にSSLの問題がある可能性が高いです。ただし、まずあなたの側で試せることがいくつかあります。エラーが1つのサイトでのみ表示される場合は、Webサイト管理者向けの修正方法に進んでください — 問題はサーバー側です。複数のサイトで表示される場合は、以下のユーザー向け修正方法を試してください。
修正方法1:SSL状態をクリアする(Windows)
WindowsはブラウザとはSSL証明書とセッションデータを管理しています。このシステムレベルのキャッシュ内の古いまたは破損したエントリが、ブラウザのキャッシュをクリアした後でも持続的な暗号スイート不一致エラーを引き起こすことがあります。
スタートメニューを開き、インターネットオプションを検索します(または Win+R を押して inetcpl.cpl と入力)。コンテンツタブに移動し、SSL状態のクリアをクリックします。OKをクリックしてブラウザを再起動してください。
修正方法2:ブラウザのキャッシュとCookieをクリアする
キャッシュされたHSTS(HTTP Strict Transport Security)ポリシーや古いSSLセッションチケットが、ブラウザに古いパラメータでの接続を強制することがあります。
Chrome/Edge:
Ctrl+Shift+Deleteを押す → 期間を 全期間 に設定 → キャッシュされた画像とファイル と Cookie にチェック → データを削除 をクリックFirefox:
Ctrl+Shift+Deleteを押す → 期間を すべての履歴 に設定 → キャッシュ と Cookie にチェック → 今すぐ消去 をクリックSafari: Safariメニュー → 設定 → プライバシー → Webサイトデータを管理 → すべてを削除
特定のドメインのHSTSエントリだけをクリアすることもできます。Chromeで chrome://net-internals/#hsts にアクセス → 「Delete domain security policies」にドメインを入力 → Deleteをクリックしてください。
修正方法3:QUICプロトコルを無効にする
ChromeのQUICプロトコル(UDP上のHTTP/3)は、QUICを適切にサポートしていないサーバーや、ネットワーク機器がポート443でUDPをブロックしている場合に、TLSネゴシエーションを妨げることがあります。
ステップ1: アドレスバーに
chrome://flags/#enable-quicと入力ステップ2: Experimental QUIC protocol を Disabled に設定
ステップ3: Relaunch をクリックしてChromeを再起動
エラーが消えた場合、QUIC/HTTP/3の競合が原因でした。QUICを無効のままにしても問題ありません — ページは標準のHTTPS(TCP上のHTTP/2)で読み込まれ、目に見える違いはありません。
修正方法4:ブラウザとオペレーティングシステムを更新する
古いブラウザやオペレーティングシステムは、最新のWebサイトが要求するTLSバージョンや暗号スイートをサポートしていない場合があります。レガシーシステムでは一般的な原因です。
Chromeの更新は chrome://settings/help で確認できます。Edgeの場合は edge://settings/help です。オペレーティングシステムは、少なくとも Windows 10、macOS 10.15、または最近のLinuxディストリビューションを使用してください。Windows XPとWindows VistaはTLS 1.2をネイティブでサポートしておらず、ほぼすべての最新Webサイトでこのエラーが発生します。
修正方法5:ウイルス対策ソフトのHTTPSスキャンを無効にする
HTTPSトラフィックをスキャンするウイルス対策ソフト(Avast、Kaspersky、Bitdefender、ESET、Norton)は中間者プロキシとして動作し、TLSハンドシェイクを傍受して独自の証明書をブラウザに提示します。ウイルス対策が元のサーバーと同じ暗号をサポートしていない場合、暗号スイートの不一致が発生します。
ウイルス対策ソフトで HTTPS Scanning、SSL Scanning、Web Shield、暗号化された接続のスキャン などの設定を探し、一時的に無効にしてください。エラーが解決した場合は、機能を完全に無効にするのではなく、影響を受けたドメインをウイルス対策の除外リストに追加してください。
修正方法6:シークレットモード/プライベートモードを試す
シークレットモードは、キャッシュデータ、Cookie、拡張機能のないクリーンなブラウザ状態で起動します。Webサイトがシークレットモードでは読み込めるが通常モードでは読み込めない場合、ブラウザ拡張機能、キャッシュデータ、または破損したプロファイルがエラーの原因です。
シークレットモードは Ctrl+Shift+N(Chrome/Edge)または Ctrl+Shift+P(Firefox)で開けます。サイトが正常に表示された場合は、通常モードに戻ってキャッシュをクリア(修正方法2)するか、拡張機能を1つずつ無効にして原因を特定してください。
修正方法7:VPNまたはプロキシを無効にする
VPNとHTTPプロキシは、ブラウザとWebサーバーの間に位置します。一部のVPNはSSLインスペクションを行ったり、暗号サポートが限定されたサーバーを経由して接続をルーティングします。企業プロキシは暗号スイートの不一致を引き起こす可能性のあるSSLインターセプションを使用することがよくあります。
一時的にVPNを切断し、Webサイトに直接アクセスしてみてください。VPNなしで正常に動作する場合は、別のVPNサーバーロケーションに切り替えるか、VPNプロバイダーにTLS互換性について問い合わせてください。
ERR_SSL_VERSION_OR_CIPHER_MISMATCH の直し方(Webサイト管理者向け)
ユーザーからWebサイトでこのエラーが報告された場合、問題はサーバーのSSL/TLS設定にあります。以下の修正方法は、証明書の問題からプロトコルと暗号の設定まで、根本原因に対処するものです。
修正方法1:SSL証明書を確認する
まず、SSL証明書が有効で、期限切れでなく、正しいドメインをカバーしていることを確認してください。DNS RobotのSSL Checkerを使用して、証明書のステータス、有効期限、発行者、チェーンの完全性を即座にスキャンできます。
このエラーを引き起こす一般的な証明書の問題:
証明書の期限切れ — Let's Encryptの証明書は90日ごとに期限が切れます。自動更新に失敗した場合、証明書は静かに期限切れになり、ブラウザは接続を拒否します。
ドメインの不一致 — 証明書が
example.comをカバーしているが、サイトがwww.example.comまたはサブドメインで提供されている。証明書は正確なドメインに一致するか、ワイルドカード(*.example.com)を含む必要があります。SHA-1証明書 — すべての主要ブラウザは2017年にSHA-1証明書を拒否しました。証明書がまだSHA-1を使用している場合は、SHA-256で再発行してください。
自己署名証明書 — 開発環境でのみ信頼されます。本番サイトには認定された認証局からの証明書が必要です。
# Check certificate details from command line
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates -subject -issuer -fingerprint -sha256
# Check which TLS versions the server supports
nmap --script ssl-enum-ciphers -p 443 yourdomain.com
# Renew Let's Encrypt certificate
sudo certbot renew --force-renewal修正方法2:TLS 1.2 と TLS 1.3 を有効にする
すべての最新ブラウザは少なくとも TLS 1.2 を要求します。サーバーがTLS 1.0または1.1のみを提供している場合、ブラウザはERR_SSL_VERSION_OR_CIPHER_MISMATCHを表示します。TLS 1.2とTLS 1.3の両方を有効にし、それ以前のバージョンはすべて無効にしてください。
# Nginx — in nginx.conf or site config
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# Apache — in httpd.conf or ssl.conf
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLHonorCipherOrder on
# After changing, restart your web server:
sudo systemctl restart nginx # or apache2更新後、DNS RobotのSSL CheckerまたはQualys SSL Labsを使用して、TLS 1.2と1.3のみが有効であることを確認してください。
修正方法3:暗号スイートを更新する
TLS 1.2が有効であっても、非推奨の暗号スイートを使用していると同じエラーが発生します。ブラウザはRC4(2016年以降)、3DES、エクスポートグレードの暗号、NULL暗号をブロックします。サーバーはAES-GCMやChaCha20-Poly1305などの最新のAEAD暗号を提供する必要があります。
# Nginx — modern cipher configuration
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
ssl_prefer_server_ciphers off; # Let client choose (TLS 1.3 best practice)
# Apache — modern cipher configuration
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off修正方法4:完全な証明書チェーンをインストールする
不完全な証明書チェーン — サーバーが自身の証明書は送信するが中間証明書を送信しない場合 — は、一部のブラウザやデバイスでERR_SSL_VERSION_OR_CIPHER_MISMATCHを引き起こすことがあります。サーバーはリーフ証明書から中間認証局までの完全なチェーンを送信する必要があります。
Let's Encryptの場合は、常に fullchain.pem(cert.pem ではなく)を使用してください。他の認証局の場合は、認証局のドキュメントから中間証明書をダウンロードし、自分の証明書と連結してください。
# Nginx — use fullchain, not just cert
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# Apache
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
# Verify chain is complete
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep -E "(depth|verify|Certificate chain)"修正方法5:証明書のドメイン名不一致を修正する
SSL証明書がアクセスされている正確なドメインまたはサブドメインをカバーしていない場合、TLSハンドシェイクが暗号スイート不一致エラーで失敗することがあります。よくあるケース:
wwwとnon-wwwの不一致 — 証明書が
example.comをカバーしているがwww.example.comはカバーしていない。解決策:両方をカバーする証明書を使用するか、ワイルドカード証明書(*.example.com)を取得する。サブドメインがカバーされていない — 証明書が
example.comをカバーしているが、ユーザーがapp.example.comにアクセスしている。ワイルドカード証明書は第1レベルのサブドメインをカバーしますが、staging.app.example.comのようなマルチレベルのサブドメインはカバーしません。まったく別のドメインの証明書 — サーバーが別のドメインの証明書を提示している(共有ホスティングや設定ミスのバーチャルホストでよく発生)。
DNS RobotのSSL Checkerを使用して、証明書がどのドメインをカバーしているか確認してください — 証明書でカバーされているすべてのドメインとサブドメインを示すSubject Alternative Names(SANs)リストが表示されます。
修正方法6:Cloudflare固有の修正
Cloudflareを使用しているサイトで訪問者にERR_SSL_VERSION_OR_CIPHER_MISMATCHが表示される場合、通常はCloudflareのSSLプロキシの設定方法に問題があります。
証明書がまだ有効化されていない — CloudflareのUniversal SSLは、ドメインを追加してから有効化まで15分~24時間かかります。Cloudflareダッシュボード → SSL/TLS → Edge Certificatesで証明書のステータスを確認してください。「Active」と表示されている必要があります。
DNSレコードがDNS-onlyに設定されている — DNSレコードは Proxied(オレンジ色の雲)に設定する必要があります。CloudflareがSSL証明書を提供するためです。DNS-only(灰色の雲)に設定されている場合、Cloudflareは接続をプロキシせず、オリジンサーバーの証明書が使用されます。
マルチレベルサブドメイン — CloudflareのUniversal証明書は
example.comと*.example.com(1レベル)のみをカバーします。sub.sub.example.comの場合は、Advanced Certificate、Total TLS、またはカスタム証明書が必要です。SSL/TLSモードの不一致 — Cloudflareダッシュボード → SSL/TLSで、オリジンに有効な証明書がある場合は暗号化モードを Full (Strict) に、Cloudflare Origin Certificateを使用している場合は Full に設定してください。
修正方法7:CDNのSSL設定を確認する
CDN(CloudFront、Fastly、Akamai、またはその他のリバースプロキシ)を使用している場合、CDNが訪問者とのTLS接続を終端します。CDNレベルのSSL設定ミスは、オリジンサーバーのSSLが正しくても、このエラーを引き起こします。
CDN証明書の期限切れまたは欠落 — CDNにあなたのドメイン用の有効なSSL証明書があることを確認してください。AWS CloudFrontの場合はACM証明書が必要です。他のCDNでは、カスタム証明書がアップロードされ有効であることを確認してください。
CDNのTLSバージョンが古い — 一部のCDN設定はデフォルトでTLS 1.0を許可しています。CDNの最小TLSバージョンを1.2に更新してください。
SNIがサポートされていない — CDNが1つのIPから複数のドメインを提供している場合、各ドメインに正しい証明書を提示するためにServer Name Indication(SNI)をサポートする必要があります。
SSL設定をテストする方法
変更を行った後は、SSL設定が正しいことを確認してください。以下のツールを使えば、訪問者が問題に遭遇する前に問題を検出できます。
[DNS Robot SSL Checker](/ssl-checker) — 証明書のステータス、有効期限、チェーンの完全性、発行者を素早くチェック。数秒で結果が表示されます。
Qualys SSL Labs — TLSバージョン、暗号スイート、プロトコルサポート、既知の脆弱性の詳細なスキャン。レターグレードで評価されます(AまたはA+を目指しましょう)。
OpenSSL CLI — コマンドラインから
openssl s_client -connect domain.com:443でテストし、生のハンドシェイク、証明書チェーン、ネゴシエートされた暗号を確認できます。Chrome DevTools — DevTools(F12)を開く → Securityタブ → 現在の接続のTLSバージョン、暗号スイート、証明書の詳細が表示されます。
# Quick OpenSSL check — shows protocol, cipher, and certificate
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep -E "(Protocol|Cipher|subject|issuer|Not After)"
# Test specific TLS version support
openssl s_client -connect yourdomain.com:443 -tls1_2 2>/dev/null | head -5 # Test TLS 1.2
openssl s_client -connect yourdomain.com:443 -tls1_3 2>/dev/null | head -5 # Test TLS 1.3関連するSSL/TLSエラー
ChromeにはSSL関連のエラーコードがいくつかあります。すべて異なるTLS障害の段階を示しています。
| エラーコード | 意味 | 一般的な原因 |
|---|---|---|
| ERR_SSL_VERSION_OR_CIPHER_MISMATCH | 共通のTLSバージョンまたは暗号スイートがない | サーバーがTLS 1.0/1.1、RC4暗号、またはSHA-1証明書を使用 |
| ERR_SSL_PROTOCOL_ERROR | 一般的なTLSハンドシェイクの失敗 | 日付/時刻の誤り、QUIC競合、SSL状態の破損 |
| ERR_CERT_AUTHORITY_INVALID | 証明書が信頼されていない | 自己署名証明書、中間証明書の欠落、信頼されていないCA |
| ERR_CERT_DATE_INVALID | 証明書が期限切れまたはまだ有効でない | 証明書の期限切れ、システム時計の誤り |
| ERR_CERT_COMMON_NAME_INVALID | 証明書のドメインが不一致 | example.com用の証明書だがwww.example.comでアクセス |
これらのSSLエラーについては、まずDNS RobotのSSL Checkerで証明書を確認してください。証明書のステータス、チェーン、有効期限、サポートされているプロトコルを1回のスキャンで確認できます。また、ERR_SSL_PROTOCOL_ERRORと「この接続ではプライバシーが保護されません」の詳細な修正ガイドもご覧ください。
今すぐSSL証明書をチェック
DNS Robotの無料SSL Checkerを使用して、証明書のステータス、有効期限、証明書チェーン、TLS設定を確認しましょう。ERR_SSL_VERSION_OR_CIPHER_MISMATCHを数秒で診断できます。
Try SSL CheckerFrequently Asked Questions
ERR_SSL_VERSION_OR_CIPHER_MISMATCH は、ブラウザとWebサーバーが共通のTLSプロトコルバージョンまたは暗号化暗号スイートに合意できないことを意味します。TLSハンドシェイク中にブラウザがサポートオプションのリストを送信しますが、サーバーに一致するものがありません。これにより安全な接続を確立できなくなります。