本文へスキップ
ecdsa.com
Chrome, Edge and other Chromium browsersブラウザー

エラーメッセージ

net::ERR_SSL_PROTOCOL_ERROR

エラーページには「ERR_SSL_PROTOCOL_ERROR」、自動化ツールや DevTools には「net::ERR_SSL_PROTOCOL_ERROR」と表示されます。

Chrome, Edge and other Chromium browsers — "This site can't provide a secure connection"

このエラーの意味

サーバーの応答がプロトコルに違反していたため、Chrome は TLS ハンドシェイクを完了できませんでした。最も多いのは応答がそもそも TLS ではなかったケース(そのポートで平文の HTTP サーバーが動いている)で、ほかにサーバーが不正な形式や想定外のハンドシェイクデータを送信したケースもあります。ページには「このサイトは安全に接続できません」「<host> から無効な応答が送信されました」と表示されます。証明書は関係ありません。

発生する理由

修正方法

  1. 1.

    ポートがどのプロトコルで応答するかを確認する

    平文の HTTP が応答する場合は、TLS 用のポートを使うか、そのリスナーで TLS を有効にしてください。

    bash
    curl -si http://www.example.com:8080/ | head -1              # plain HTTP answers?
    openssl s_client -connect www.example.com:443 -servername www.example.com -brief </dev/null
  2. 2.

    開発環境:HSTS をクリアするか、ローカルで HTTPS を使う

    chrome://net-internals/#hsts でそのホストの HSTS エントリを削除する(プリロード済みのドメインでは不可)か、開発用サーバーにローカルで信頼される証明書を設定してください。

    text
    Local development on a domain with HSTS (e.g. *.dev, or a site you once visited over HTTPS):
    open chrome://net-internals/#hsts, "Delete domain security policies" for the host,
    or serve the dev site over HTTPS with a locally trusted certificate (mkcert).
  3. 3.

    サイト運営者:https:// で提供している箇所で TLS を有効にする

    リスナーに TLS と証明書を設定し、外部からハンドシェイクをテストしてください。

    text
    Site owners: make sure the port that browsers reach with https:// has TLS enabled
    (nginx: "listen 443 ssl;" plus ssl_certificate / ssl_certificate_key).

関連するエラー

署名エラーデータベースをすべて見る