Как прокси Http SSL работает с безопасностью? - PullRequest
0 голосов
/ 06 мая 2020

Я очень смущен тем, как работает прокси-сервер SSL http, и хотел бы узнать подробности. допустим, у меня есть домен https://myproxy.com, и я хочу подключиться к https://awebsite.com. Я настраиваю свой chrome или firefox с прокси / именем пользователя / паролем. Затем я go на сайт https://awebsite.com.

  • Я предполагаю, что chrome подключается к https://myproxy.com
  • Затем я предполагаю, что существует обмен сертификатами с использованием сертификатов myproxy? Это правильно?
  • После этого, я «думаю», отправлено HTTP-сообщение подключения (все это описано в материалах http-прокси)
  • Затем, поскольку подключение было отправлено, прокси-сервер подключается на сайт awebsite.com для проверки сертификата
  • Затем chrome отправляет запрос на веб-сайт на прокси-сервер в зашифрованном виде
  • Прокси-сервер расшифровывает, повторно шифрует и отправляет на сайт awebsite.com
  • Затем все происходит в обратном порядке

это правильно?

и, в частности, я вижу, что chrome запускается так же

    ChromeOptions options = new ChromeOptions().addArguments("--proxy-server=http://proxy:3128");

и как-то он делает https в порт http? или это?

Когда я использую http://localhost: 8080 для прокси, он явно отправляет сообщения CONNECT в порт http :( не на безопасный порт. Когда я устанавливаю его на https://localhost: 8443 , я не уверен, что происходит. Я не получаю сообщение CONNECT, но это, скорее всего, неудачное рукопожатие.

EDIT: больше информации по мере изучения Я curl на https, например, предоставляя ему прокси

curl -verbose --proxy localhost:3128 https://www.caredash.com

Я вижу, что на мой сервер приходит сообщение CONNECT, и я отправляю OK, а затем curl записывает это

* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* CONNECT phase completed!
* CONNECT phase completed!

Я беру дальнейшее предположение здесь, но это фаза обмена сертификатами через порт, который изначально был в виде обычного текста, поэтому сокет теперь переходит с обычного текста на SSL с использованием сертификата прокси-домена «Я думаю»?

Зачем отправлять так много информации в виде обычного текста на прокси-сервер? Должен ли CONNECT быть только CONNECT *, чтобы люди не могли видеть, на какие веб-сайты кто-то собирается? Теперь мне кажется странным, что я прохожу через это, пытаясь выяснить безопасность здесь.

ДАЛЬШЕ , Подозреваю, что завиваюсь ли я n https://proxy: порт , затем он подключится к прокси-серверу с помощью https THEN, он отправит сообщение CONNECT через https, а затем туннелирует рукопожатие SSL веб-сайта в SSL на прокси. Это правильно? (Думаю, скоро я буду тестировать и это).

спасибо, Дин

...