web-dev-qa-db-ja.com

Googleで安全なプロキシを使用するChrome

Googleで安全なプロキシを使用するときはいつでもChrome ERR_PROXY_CERTIFICATE_INVALIDを取得します)、さまざまなシナリオとバージョンを試しました。

証明書

自己署名証明書を使用しています:

openssl genrsa -out key.pem 1024
openssl req -new -key key.pem -out request.pem
openssl x509 -req -days 30 -in request.pem -signkey key.pem -out certificate.pem

注:この証明書は、単純なHTTPSサーバーをセットアップしようとすると機能します(自己署名であるため警告が表示されます)。

プロキシ

次に、localhost:8080でセキュアプロキシを開始します。これを達成するためのいくつかの方法があります、私は試しました:

  • カスタム Node.js スクリプト;
  • stunnel ;
  • node-spdyproxy (OK、これにはSPDYも含まれますが、後で...問題は同じです);
  • [...]

ブラウザ

次に、Google Chrome with:

google-chrome --proxy-server=https://localhost:8080 http://superuser.com

たとえば、http://superuser.comをロードします。

問題

私が得るのは:

Error 136 (net::ERR_PROXY_CERTIFICATE_INVALID): Unknown error.

ウィンドウ内、および次のようなもの:

[13633:13639:1017/182333:ERROR:cert_verify_proc_nss.cc(790)] CERT_PKIXVerifyCert for localhost failed err=-8179

コンソールで。

注:これは、安全でない証明書について不平を言う大きな赤い警告ではありません。


さて、私は証明書などに関係することについてかなりn00bであることを認めなければなりません。いくつかの基本的なポイントが欠けている場合は、私に知らせてください。

3
cYrus

たぶん、その証明書をシステムの証明書ストアにインポートして、それを信頼してみてください。 ChromeはOSを使用してセキュリティ証明書を検証します。

Chromeは、プロキシ機能がネットワークコンポーネントへの透過的なアドオンとして実装されている可能性があるため、プロキシの証明書が無効な場合に警告の代わりにエラーを表示することは非常に理解できると思います。プロキシの証明書を確認するための追加のUIは、便利な機能ではないようです。

次の手順でうまくいきます。

  1. キーと証明書を生成します。

    openssl genrsa -out key.pem 1024
    openssl req -new -key key.pem -subj "/CN=localhost" -out req.pem
    openssl x509 -req -days 30 -in req.pem -signkey key.pem -out cert.pem
    

    必須フィールドはCNCommonName)のみであり、必須はプロキシの1つの同じドメインであることに注意してください。

  2. certutil(Debianのパッケージlibnss3-toolsから)を使用して、証明書をシステムデータベースに追加します。

    certutil -d "sql:$HOME/.pki/nssdb" -A -n dummy -i cert.pem -t C
    

    dummyは単なるニックネームであり、何でもかまいませんが、必ず-t Cオプションを指定してください。

4
billc.cn