KYC不要 — IDもセルフィーも書類も不要。暗号通貨で支払い:BTC, USDT, USDC, ETH, SOL, LTC
言語: 日本語
今すぐ始める

プロキシエラーリファレンス · 接続とTLSエラー

プロキシ経由のSSL CERTIFICATE_VERIFY_FAILED

クライアントのTLS証明書エラー:各ツールでの正確なメッセージ、考えられる原因の順序、効果的な修正方法。

最終更新:

クイックアンサー

プロキシでのSSL: CERTIFICATE_VERIFY_FAILEDとは何を意味していますか?

CERTIFICATE_VERIFY_FAILED はクライアントがウェブサイトのTLS証明書を検証できなかったことを意味します。CrawlRelayゲートウェイのようなCONNECTプロキシではTLSは終端まで暗号化されているため、プロキシが原因ではありません。クライアント側の古いCAバンドル、HTTPSを検査するアンチウイルスや企業ファイアウォール、または時計の誤りを確認してください。本番環境でverify=Falseでの対応は絶対に避けてください。

SSL: CERTIFICATE_VERIFY_FAILEDを一目で理解する

エラーSSL: CERTIFICATE_VERIFY_FAILED
タイプクライアントのTLS証明書エラー
送信元TLSライブラリが、ウェブサイトの証明書を検証できない場合
定義されている場所X.509 path validation: RFC 5280; TLS 1.3: RFC 8446
再試行しますか?いいえ。信頼ストアかネットワークを修正してください
まず確認すること同じマシンでプロキシなしの同じURLをテストする

SSL: CERTIFICATE_VERIFY_FAILEDとは何ですか?

TLSハンドシェイク中にウェブサイトは証明書チェーンを送信します。クライアントは信頼された認証機関リスト(信頼ストア)と照合し、名前や有効期限をチェックします。いずれかが失敗すると処理を停止します。

CONNECTトンネルではプロキシはハンドシェイクをそのまま通すため、見えている証明書はウェブサイト自身のものです。検査ソフトのように独自証明書を挿入するものや、マシンの古い信頼ストアが一般的な原因です。

CERTIFICATE_VERIFY_FAILEDはPython、curl、Node.js、ブラウザではどのように表示されますか?

同じ失敗でもツールごとに異なる表示になります。ログ検索用のメッセージは以下の通りです:

  • Python: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
  • Node.js: UNABLE_TO_GET_ISSUER_CERT_LOCALLY または SELF_SIGNED_CERT_IN_CHAIN
  • curl: curl: (60) SSL certificate problem: unable to get local issuer certificate
  • ブラウザ: NET::ERR_CERT_AUTHORITY_INVALID

CERTIFICATE_VERIFY_FAILEDの原因は何ですか?

最も可能性が高いのは次の通りです:

  • 古いCAバンドル、例えばPythonの古いcertifiパッケージ。
  • アンチウイルス、企業ファイアウォール、またはデバッグ用プロキシによるHTTPS検査。独自の証明書を提示します。
  • システム時計の誤りにより有効な証明書が期限切れまたは未有効となる場合。
  • 中間証明書が欠落した壊れた証明書チェーンのウェブサイト。
  • システムのCA証明書パッケージが含まれていないコンテナイメージ。

CERTIFICATE_VERIFY_FAILEDを段階的に診断するには?

  1. プロキシなしで同じリクエストを実行し、失敗するか確認してください。失敗すればプロキシは関係ありません。
  2. openssl s_clientかcurl -vで証明書発行者を表示します。アンチウイルスやファイアウォールの名前があれば検査されています。
  3. システムの日付と時刻をチェックします。
  4. CAバンドルを更新して再テストしてください。
curlで失敗したURLをテストする(HTTPポート、詳細表示)
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL

CERTIFICATE_VERIFY_FAILEDをどう修正しますか?

  • certifi (pip install -U certifi) やシステムのCAパッケージを更新する。
  • ネットワークで検査が必要な場合は会社の検査証明書を信頼ストアに追加するか、そのネットワーク外でスクレイピングを行う。
  • ネットワーク時刻同期で時計を正しく設定する。
  • slimなコンテナイメージにCA証明書をインストールする。例えばca-certificatesパッケージ。
  • 認証情報を送信したり結果を信頼するコードで検証無効化は絶対にしない。

CERTIFICATE_VERIFY_FAILEDの後に再試行すべきですか?

再試行は避けてください:同じ信頼ストアは同じく失敗します。信頼ストア、時計、またはネットワーク経路を修正した後に再実行してください。

SSL: CERTIFICATE_VERIFY_FAILEDはCrawlRelayにどう関係しますか?

CrawlRelayのHTTPポートはCONNECTでHTTPSをトンネルするため、クライアントが確認する証明書はウェブサイトが送るものです。エラーがゲートウェイ経由のみで発生し、直接アクセスで発生しない場合は、対象ホスト名と完全なエラーを添えてサポートにお問い合わせください。出口側を確認します。

ゲートウェイ:gw.crawlrelay.com、ポート7777(HTTP、HTTPSはCONNECT経由)、ポート7778(SOCKS5)。ユーザー名形式:USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}。関連情報:SSL: WRONG_VERSION_NUMBER · Connection reset · Python guide。

SSL: CERTIFICATE_VERIFY_FAILED:開発者がよく尋ねる質問

プロキシはSSL証明書エラーを起こしますか?

インターセプティングプロキシは独自の証明書を提示するためエラーを引き起こす可能性があります。CONNECTトンネルプロキシは暗号化されたバイトを単に転送するだけでハンドシェイクの内容は見ないので起こしません。プロキシなしで同じリクエストを実行し、エラーが残る場合はマシンかネットワークの問題です。

verify=Falseはスクレイピングで安全ですか?

修正としては不適切です。検査や壊れたチェーンを隠すため、経路上の攻撃者にトークンやクッキーなど通信内容を読み取られたり改ざんされたりする恐れがあります。素早いローカルテスト以外では、認証情報を送るジョブや無人運用では絶対に使わないでください。

なぜDockerで失敗し、ラップトップで動くのですか?

slimなコンテナイメージはCA証明書なしで配布されることが多いため、証明書検証ができません。コンテナイメージにシステムのCAパッケージをインストールするか、Pythonのcertifiバンドルを利用してください。コンテナ内部の時計が正しいかもご確認ください。

他のプロキシエラーのリファレンス

HTTPステータスコード

ブラウザとクライアントのエラー

接続とTLSエラー

失敗ケースを網羅したドキュメント付きレジデンシャルプロキシ

$0.50/GB発のCrawlRelayレジデンシャルプロキシ、期限切れがないトラフィック。

$0.50/GBから · KYC不要

今すぐ始める