昨天在一台 vps 上搭了一个 https 代理,使用的是 squid3+stunnel4 ,用的 StartSSL 的证书。
但是却发现通过这个代理访问一般的网站是没问题的,包括 Telegram 的 TCP 请求也 ok ,但是谷歌等被墙站点仍然无法访问,看 Surge 的记录发现卡在了 establish connection 这一步,完全没有数据交换。
百思不得其解,查了一些资料,说是 https 代理的 CONNECT 请求是不加密发送给代理服务器的,但是这个本身不应该跑在 TLS 的隧道里吗?
1
ZRS OP 开始还以为是我的配置问题,折腾到半夜。后来换成 spdyproxy 这个工具搭建,还是一样的结果...
|
2
neilp 2016-08-24 00:22:20 +08:00 via iPhone
connect 发生在 简历 tls 通道之前啊 先告诉代理你要连谁,然后代理才能转发 tcp 数据啊 之后才是 tld 连接建立
|
3
neilp 2016-08-24 00:23:36 +08:00 via iPhone
手机打字 错误一片 最后是 tls 连接建立
|
6
ranran 2016-08-24 01:23:54 +08:00
@ZRS
看了这个贴 感觉和你理解差不多 所有数据都应该通过 spdy 加密。 http://www.oschina.net/question/12_117516 实际情况建议你抓包看看是否发的明文 CONNECT |
7
ranran 2016-08-24 01:34:22 +08:00
|
8
gamexg 2016-08-24 08:23:36 +08:00
如果你的却是 https 代理,那么所有的内容都是加密的。
非 http2 可以看作在 http 协议外面套了一层 tls 。 然后 https 代理并不可靠, CONNECT 连接 https 站点存在明显的流量特征,是可以被探测到的。 http://blog.zorinaq.com/my-experience-with-the-great-firewall-of-china/ |
9
ZRS OP |
10
fangdingjun 2016-08-24 10:09:20 +08:00 via Android
这种架构 client--------tls------->proxy------------->target
如果配置正确,可以访问任何网站 有问题,检查一下 squid 日志,我之前遇到过 squid 连不上 google 的 ipv6 地址直接返回 503 |
11
nvidiaAMD980X 2016-08-24 10:52:22 +08:00 via Android
我发现我也有和 LZ 一样的问题,应该是你所处的地区被审查得厉害,换个地区,或许就没有问题了。
我在老家死活都是卡在 connecting 阶段…………换了一个地区,就没事了。 |
13
julyclyde 2016-08-24 15:40:20 +08:00
CONNECT 这句话显然不加密啊
后面是否加密要看你连接的是什么服务啊 |
14
flynaj 2016-08-25 00:01:14 +08:00 via Android
建议直接上 HTTP2 , nghttpx+ squid 这样就不需要客户端了
|