我怎样才能让Squid向Zscaler提供authentication证书?

我netadmin一所学校。 学校通过在我的控制之外的设备上实施的VPN连接到外部世界(所有学校宿主都有10.xxx IP地址)。 networking唯一的出路是通过上游过滤代理服务器为多所学校服务。

学校拥有完全控制下的本地Squid代理,所有学校浏览器均configuration为使用。 它目前设置为使用上游代理作为其父,并通过用户凭据通过,除了我有Squid提供预设凭据的域和URL的白名单。 除此之外,即使上游(域级别)filter将YouTube作为一个整体限制在工作人员身上,并允许更新检查等安静地进行,而不会在不方便的情况下为用户提供证书,也可以让学生访问选定的YouTubevideo倍。

上游最近决定从ISP提供的网页filter切换到Zscaler,似乎没有使用HTTPauthentication; 它使用redirect,HTTPS和cookies来完成一些复杂的基于浏览器的舞蹈。

有谁知道一种方法来configurationZscaler要求validation凭据每个请求,而不是每个浏览器会话,并configurationSquid提供这些?

所以事实certificate,事实上没有合理的方法来做到这一点,我需要诉诸一个kruge。 不是一个疯子,但一个kluge都是一样的。

Zscaler可以识别链接到“组织的Internet网关位置”的代理。 对于通过代理链从组织的本地代理服务器到达Zscaler的请求,即使Zscaler没有执行任何基于cookie的身份validation,也可以基于网关位置应用默认的过滤策略。 这也是一样,因为最终用户可以通过简单地将其浏览器设置为使用伪造的用户代理string来实际禁用基于cookie的authentication。

Zscaler站点pipe理员也可以创build“sublocations”,允许为多个本地代理分别设置默认的过滤策略。 Zscaler通过链接到它的代理服务器的IP地址来标识主要位置和所有子位置。 这些东西都在“Internet网关和SSL”的“pipe理”页面中,其中一个有用的选项是可以完全closures任何给定位置或子位置的身份validation。

我的学校只有一个园区和校园里的一台Squid代理服务器,但是这个代理现在看起来像Zscaler的四个代理服务器。 除了静态分配给eth0的原始IP地址以及作为Internet网关位置的Zscaler注册之外,现在还有三个分配给eth0:1eth0:2eth0:3的相应子位置( 鱿鱼员工学生 )在Zscaler结束,所有closures身份validation。

因此,现在我可以在本地执行所有用户身份validation,并使用squid.conf中的acl proxy_auth标记将用户标记为工作人员或学生,并使用tcp_outgoing_address标记来selectZscaler根据本地用户和站点规则查看我的请求的IP地址。

三个sublocations与本地唯一身份validation加上一个Zscaler身份validation的主要位置留下(访问员工谁拥有自己的Zscaler证书)给了我一样多的粒度,因为我用我们的旧filter,希望我的现场用户赢得甚至没有注意到有什么变化。

在Apache中使用SetHeader模块完成,用户代理string为wget,完美地工作。 这绕过了authentication,因为zscaler知道wget永远不会做他们的非标准authentication。