Squid反向代理SSL加密的SharePoint站点

References:

http://apps.hi.baidu.com/share/detail/20306022

http://www.ajaxstu.com/Proxyfuwuqi/333031.html

http://www.php-oa.com/tag/squid

. 环境介绍

系统:CentOS 5.7 64bit

Squid2.6STABLE21

反代目标:https://www.avepoint.net

. 安装Squid

Squid 官方下载地址:

http://www.squid-cache.org/Versions/

作为老牌的Proxy软件,Squid的支持度非常好,除了源码包和详尽的文档外,主流发行版均有二进制包直接提供。

此次实验的由于目的十分单纯,为了简化流程,采用直接yum安装:

yum install squid -y


. 修改配置

1. yum 安装的 squid 默认是没有 visible_hostname 的,首先添加 visible_hostname:

vi squid.conf

这里我添加了 ave_squid 作为 squid 的主机名:

visible_hostname ave_squid

2. 添加acl允许squid访问欲代理站点

acl ssl_server dstdomain .avepoint.net

# *.avepoint.net 允许访问

http_access allow ssl_server

!注意:不建议直接放开 http_access allow all,虽然看似省事,但可能会造成安全隐患!


3. 增加squid监听443端口并加载自签证书

https_port 443 cert=/etc/squid/ssl/avepoint.net.crt key=/etc/squid/ssl/avepoint.net.key defaultsite=www.avepoint.net accel


4. 预防老版本IESSL bug

ssl_unclean_shutdown on


5. 添加源网站

cache_peer www.avepoint.net parent 443 0 no-query no-digest originserver login=PASS ssl sslflags=DONT_VERIFY_PEER front-end-https=on

a) login=PASS 是为了告知 squid 此源网站需要用户名/密码验证,用于解决SP等网站的登录认证;

b) ssl 为指定协议,后跟的 sslflags=DONT_VERIFY_PEER 为不进行源端SSL证书验证,可以解决上级网站采用自签证书造成的中断,以及减少响应时间;

c) front-end-https=on 是为微软OWA使用SSL反代理而量身订做的参数。


6. 关于 cache_mem cache_dir

如字面所述,cache_mem 是将部分缓存(通常是指定容量以下的小文件)放在内存中,cache_dir是指定硬盘上的squid缓存目录。此处我们不涉及缓存内容,所以保持默认即可。

值得一提的是,硬盘缓存可以使用 tmpfs 文件系统,即所谓的 shm,实质上大致与 ramdisk 等同,可以提高性能。

至此配置基本完成,可以启动squid测试了:

1.png

. 备注

1. 如果 squid 反代的并发较高时,可能会遇到类似 file descriptor error 的错误,多是因为Linux默认的同时打开文件数仅为1024,而此时打开的缓存文件大小早已超过这个数值。

解决方式:

ulimit -n 65535

2. squidclient squid 自带的一个功能十分强大的管理软件,可以独立或搭配其他软件对 squid 的状态和缓存内容进行查看和操作。例:

squidclient -t 1 -h localhost -p 3128 mgr:info

注意,3128 端口需要在 squid 中定义为 http_port

3. 日志位置

/var/log/squid :

access.log 代理访问日志

cache.log squid 缓存的相关运行信息

squid.out squid 程序本身的运行信息

store.log 对缓存文件的操作记录

4. 自签证书的生成可参照Nginx的笔记,在此不再赘述。

. 小结

作为老牌的 ProxySquid 参数十分繁杂,但与之对应的是极大丰富的功能。

如果需求简单明确如本实验所述的话,不需要过多的配置就可以实现所需功能。

让我留下深刻印象的是,Squid 提供了强大的对 header 进行操作的方式,可以细致地控制 header 输出与否,以及对 header 进行更改等等,实用性很强。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章