概述
Squid是一个常用的HTTP代理服务器,能做正向代理和反向代理。但是,它的HTTPS支持极其有限,宝宝不想看下去了。
支持情况
仅考虑反向代理情况,详见文档
- HTTPS反代(使用https_port配置)
- 支持HTTP、HTTPS后端
- HTTP/2计划在4.0版本中支持,正在进行中
- 不支持SNI(即一个HTTPS端口使用多个证书)(仅支持正向代理情况下拦截)
配置
前提条件
- Squid-2.5 及更高
- 编译时带有
--enable-ssl
参数(可通过squid -v
查看编译参数)
Ubuntu 16.04 官方仓库中的Squid 3.5.12不支持,需要手动编译。CentOS 6 仓库中的Squid 3.1.23支持。
配置文件(以CentOS6仓库中的Squid-3.1为例)
https_port 443 vhost cert=/path/to/cert key=/path/to/key
对于3.3及更高版本,则应把vhost
改为accel
。
如有多个子域名,则需要通配符证书。需要注意的是,Squid不支持SNI,即不能使用多个证书。
提高安全性可配置更详细一些
https_port 443 accel cert=/path/to/cert key=/path/to/key options=NO_SSLv2,NO_SSLv3 cipher=sth
NO_SSLv2,NO_SSLv3
——用于禁止过时旧协议cipher
——可选配置,为禁用弱密码配置。参数参见Mozilla SSL Configuration Generator
其余配置保持即可。
评价
Squid作为代理服务器,对HTTPS支持比较基础。因开发者对加密的态度而不支持HTTPS的缓存服务器Varnish
也在开发中的6.0版本伴随HTTP/2开始支持。除此之外,HAProxy
、Traffic Server
等反向代理软件对HTTPS及HTTP/2均已经有较好的支持。
但总的来说,个人认为Squid作为HTTPS服务器有点勉强,更倾向使用Nginx获得更可现代、定制的HTTPS服务。