关于apache做forward https proxy的问题,求教 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
g0t3n
V2EX    Apache

关于apache做forward https proxy的问题,求教

  •  
  •   g0t3n 2014-01-24 16:44:12 +08:00 6019 次点击
    这是一个创建于 4329 天前的主题,其中的信息可能已经有所发展或是发生改变。
    首先说下最近对https proxy的一些了解,其实https proxy并不是一个正确的定义,而在我这个上下文,我把https proxy定义为
    client ssl封装 -> proxy server 解密 -> dst host
    其核心还是纯 http proxy 请求,但里面的内容在client到proxy中经过ssl封装

    最近用squid改改配置的确实现了这个forward proxy,里面内容大概为(我知道有人会叫我贴的;D
    ac 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/unsupportedbrowser
    Content-Type: text/html; charset=
    X-FB-Debug: 4fL3rJ6Scx76Vbtlqi/bXz7Z4G2/n5ZGob9jCT2QmS0=
    Content-Length: 0
    Connection: close
    然后我实在是没招了,说了那么多貌似有点凌乱,总结出来就是 apache 配出来的 https 代理不能访问被墙的 https 网站,原因是为甚麽呢?
    另外还有一个问题是,chrome中的 switchsharp 中,https代理是什么意思呢?我测试过不能直接连着ssl端口用。。。
    3 条回复    1970-01-01 08:00:00 +08:00
    julyclyde
        1
    julyclyde  
       2014-01-25 09:42:05 +08:00
    第一段写的那个东西叫 SSL offloader,该服务器和网站之间是HTTP的(注意不是强调未加密,而是强调网站那边会“认为”自己被HTTP而非HTTPS访问)
    而你用squid实现的叫支持HTTPS的proxy,也就是支持CONNECT的proxy,客户端的加密数据流经过代理服务器转发到达网站服务器,网站会认为自己被HTTPS访问
    完全是两个东西

    你后面那一段配置我看不太懂,因为一直比较抵制Apache(Proxy和Rewrite模块界限不够明显,设计得不干净),没好好学习过
    但看后面的302回应,应该是facebook不允许“被HTTP访问”所以主动302给你的。你需要的是一个支持CONNECT的proxy
    g0t3n
        2
    g0t3n  
    OP
       2014-01-25 10:21:11 +08:00
    @julyclyde 感谢你的提醒,我忽然想起 http 代理有两个例子就是 GET http://www.baidu.com 和 CONNECT tunnel,如此看来难道是我配置的 apache proxy 并没有用到 mod_proxy_connect 所以才会发生这样的情况?今天我继续折腾折腾。
    另外,squid 的 https 代理应该就是您所指的 SSL offloader 的一个特例了,只是里面传输的数据是 http 请求,应该是这样理解把,又学到一个名词了
    julyclyde
        3
    julyclyde  
       2014-01-25 16:58:06 +08:00
    @g0t3n 不止是代理服务器。客户端软件对于“目标是HTTPS,代理是HTTP”的情况才会尝试CONNECT方法。如果都是HTTP自然是直接GET/POST的。
    所谓SSL offloader就是对客户端HTTPS对后面HTTP的代理服务器,负责SSL处理。但需要通过某种方法明确告知后面是HTTPS的;据说一些后面的appserver支持特定的header作为标志
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     928 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 22:26 PVG 06:26 LAX 14:26 JFK 17:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86