首先说下最近对https proxy的一些了解,其实https proxy并不是一个正确的定义,而在我这个上下文,我把https proxy定义为
client ssl封装 -> proxy server 解密 -> dst host
其核心还是纯 http proxy 请求,但里面的内容在client到proxy中经过ssl封装
最近用squid改改配置的确实现了这个forward proxy,里面内容大概为(我知道有人会叫我贴的;D
acl CONNECT method CONNECT
http_access deny all
https_port 53 cert=best5.crt key=best5.key cafile=best5.crt
本地用 stunnel ,这样的确能跑起来,速度嘛,感觉不咋的,貌似是因为cache没开启的原因?看youtube 也卡。但我能确定不是ssl解密为主要原因(因为下面用 apache 同样做 ssl 加密的时候是很流畅的),注意,这里的squid做出的代理能访问 dst host 为 https 的。(疑问1:这是因为支持 connect么?)
然后我就像用 apache 来实现,这样服务器就不用装 squid 这样的大头了。然后我的配置如下
ProxyRequests ON
AddDefaultCharset Off
ProxyVia Off
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/lidongbest5.crt
SSLCertificateKeyFile /etc/httpd/ssl/lidongbest5.key
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
是的,client 端仍然用stunnel,然后经过各种测试,我发现youtube,各种被墙的 http 网站均能上了,可是 twitter / facebook 仍然不能上。难道是因为不能用 https 的原因吗?我访问 gmail 仍然是杠杠的。有朋友说 dns 污染什么的,我用 ncat --ssl 却是能访问的
➜ ~ ncat -v --ssl 不告诉你 53
GET
http://facebook.com HTTP/1.0
HTTP/1.1 302 forced.302
Date: Fri, 24 Jan 2014 04:56:48 GMT
Location:
http://www.facebook.com/unsupportedbrowserContent-Type: text/html; charset=utf-8
X-FB-Debug: 4fL3rJ6Scx76Vbtlqi/bXz7Z4G2/n5ZGob9jCT2QmS0=
Content-Length: 0
Connection: close
然后我实在是没招了,说了那么多貌似有点凌乱,总结出来就是 apache 配出来的 https 代理不能访问被墙的 https 网站,原因是为甚麽呢?
另外还有一个问题是,chrome中的 switchsharp 中,https代理是什么意思呢?我测试过不能直接连着ssl端口用。。。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/98226
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.