据我所知,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等。有什么方法可以隐藏它们吗?
例如,是否可以让浏览器在发送HTTP连接之前建立SSL连接?当然,存在一些技术障碍,例如,它将导致B-S SSL嵌入B-P SSL中(可以通过将“更改密码”更改为NULL密码来缓解吗?)。但是无论如何,如果浏览器和代理之间的消息是受保护的,那么创建近无客户端SSLVPN会容易得多,从而避免了目前常见的L7 SSL VPN中难看的URL重写。请分享您的意见。谢谢。