2

Всякий раз, когда я использую безопасный прокси с 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 (ОК, это тоже касается SPDY, но позже ... проблема та же);
  • [...]

Браузер

Затем я запускаю Google Chrome с:

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

в консоли.

Примечание: это не большое красное предупреждение, которое жалуется на ненадежные сертификаты.


Теперь я должен признать, что я совершенно неравнодушен к тому, что касается сертификатов и тому подобного, если я упускаю некоторые фундаментальные моменты, пожалуйста, дайте мне знать.

1 ответ1

4

Возможно, попробуйте импортировать этот сертификат в хранилище сертификатов вашей системы и доверять ему. Chrome использует ОС для проверки сертификата безопасности.

Я думаю, что вполне понятно, что Chrome вместо этого выдает предупреждение об ошибке, когда сертификат прокси-сервера недействителен, потому что функция прокси, вероятно, реализована в виде прозрачного дополнения к его сетевым компонентам. Требование дополнительного пользовательского интерфейса для подтверждения сертификата прокси не кажется полезной функцией.

Следующие шаги сделают свое дело:

  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
    

    Обратите внимание, что единственным обязательным полем является CN (CommonName), и оно должно совпадать с доменом прокси-сервера.

  2. Добавьте сертификат в системную базу данных, используя certutil (из пакета libnss3-tools в Debian):

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

    dummy - это просто псевдоним и может быть любым, но обязательно укажите опцию -t C

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .