默认情况下squid是不能解密https流量的,也就不能缓存https流量。但配置SSL Bump功能可以实现对HTTPS流量进行缓存。
生成证书
参考这篇文章
配置squid
http_port 3128 ssl-bump tls-cert=/opt/web/data/squid/ssl/cert1/squid_ca.pem tls-key=/opt/web/data/squid/ssl/cert1/squid_ca.key dynamic_cert_mem_cache_size=128MB generate-host-certificates=on
sslproxy_cert_error allow all # 即使原始服务器证书错误仍然进行连接
ssl_bump stare all #所有域名开启解密,默认配置是不解密的
也可以用ssl_bump bump all配置与stare的区别是bump生成的证书除了域名外没有其它扩展字段,比如国家,单位什么的,stare则复制了原始证书中的甩的字段。
完了以后重启Squid发现系统自带的squid不支持ssl-bump,然后docker中的squid也不支持ssl-bump,然后只能自己编译了。
squid编译
- 源码下载
http://www.squid-cache.org/Versions/v6/
- 安装依懒包
apt-get update && apt-get install -y build-essential libssl-dev openssl libxml2-dev libexpat1-dev libsasl2-dev libpam0g-dev libkrb5-dev pkg-config apache2-utils net-tools libecap3-dev libldap2-dev - 编译
./configure \
--prefix /usr \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simplify_Chinese" \
--enable-poll \
--enable-gnuregex \
--build=x86_64-linux-gnu \
--disable-maintainer-mode \
--disable-dependency-tracking \
--disable-silent-rules \
--enable-build-info="Ubuntu linux" \
--disable-translation \
--with-filedescriptors=65536 \
--with-large-files \
--with-openssl \
--enable-ssl \
--enable-ssl-crtd \
--enable-inline \
--disable-arch-native \
--enable-storeio=ufs,aufs,diskd,rock \
--enable-removal-policies=lru,heap \
--enable-delay-pools \
--enable-cache-digests \
--enable-follow-x-forwarded-for \
--enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,PAM,POP3,RADIUS,SASL,SMB \
--enable-auth-digest=file,LDAP \
--enable-auth-negotiate=kerberos,wrapper \
--enable-auth-ntlm=fake,SMB_LM \
--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,SQL_session,unix_group,wbinfo_group \
--enable-security-cert-validators=fake \
--enable-storeid-rewrite-helpers=file \
--enable-url-rewrite-helpers=fake \
--enable-eui \
--enable-esi \
--enable-icmp \
--enable-zph-qos \
--enable-ecap \
--enable-underscore
make -j4 && make insstall
启动之前需要执行这条命令初始化证书数据库,squid自己执行的security_file_certgen会报错,初始化后squid就不需要再执行了。
security_file_certgen -c -s /usr/var/cache/squid/ssl_db -M 128
或者配置
“`sslcrtd_program /usr/libexec/security_file_certgen -s /usr/var/cache/squid/ssl_db -M 128MB“`
在/usr/var/cache/squid/ssl_db/certs/目录下可以看到所有生成的证书
#添加/usr/libexec到环境变量
“`export PATH=$PATH:/root/.local/bin:/usr/libexec“`
参考: