看GoAgent控制台上的日志,问题似乎跟SSL的连接建立有关系。再把Chrome的“审查元素”功能打开,Console里面一堆错误。随便挑了个页面试图打开,好了,这下清楚了,证书有问题。
其实问题很简单:GoAgent仿冒的证书被占用啦。
官方其实也提到过这个事情:
因为GAE平台限制,没法支持真正的ssl加密,goagent只能通过伪造证书的方式做到代理ssl加密的网站,这个证书就是用来欺骗浏览器的。GoAgent实际上相当于一个“中间人”。当访问HTTPS站点时,就得采用SSL中间人攻击的类似方式,才能完成代理的工作。SSL中间人攻击怎么弄?导入受信任的根证书,然后利用这个根证书签发的证书把内容拆开后重新组装、加密、封包,骗完甲方骗乙方,欺骗通讯双方。否则两端任何一方觉得这内容不对劲,SSL传输就会失败。这其实也就是为什么必须要干掉CNNIC相关的根证书的原因。
如果升级的时候不把certs目录清空,就有可能会有部分站点对应的证书还是以前的老的、用旧的根证书签发出来的。GoAgent客户端一看,噢,证书已经有了,就不再重新生成了。但Chrome觉得证书不对,于是SSL握手就被挡了。
解决办法很简单,每次升级GoAgent的时候,把local/certs目录删掉。或者干脆每次用新目录来升级好了。