Насколько я знаю, HTTPS-прокси работает как следующая диаграмма (пожалуйста, дайте мне знать, если мое понимание неверно),
Browser Proxy Server
| | |
| <----- TCP handshake -----> | |
| | |
| ------ HTTP connect -----> | |
| | <---> TCP handshake |
| <----- 200 OK ------ | |
| | |
| ---- SSL Client Hello ----> | |
| | ----> SSL Client Hello |
| <-- Server Hello & Cert --- | |
| | <---- Server Hello & Cert |
| --- Client Key Exchange --> | |
| | ----> Client Key Exchange |
| | |
| <= SSL Record (HTTP GET) => | <===> |
| | |
Перед пересылкой данных, защищенных SSL, сообщения между браузером и прокси-сервером являются открытым текстом. Есть еще некоторая важная информация, такая как доменное имя, SNI и т. Д., Которые видны человеку посередине. Есть ли способы их скрыть?
Например, возможно ли в браузере установить SSL-соединение перед отправкой HTTP-соединения? Конечно, есть некоторые технические препятствия, например, это приведет к B-S SSL, встроенному в B-P SSL (может быть смягчено с помощью Change Cipher на NULL-шифр?). Но как бы то ни было, если бы сообщения между браузером и прокси-сервером были защищены, было бы гораздо проще создать SSLVPN почти без клиента, чтобы избежать текущей уродливой перезаписи URL, которая обычно используется в L7 SSL VPN. Пожалуйста, поделитесь своим мнением. Спасибо.