使用代理服务器squid,想实现url过滤,禁止访问某个url,我们自然就想到了使用url_regex,可以使用正则对url进行过滤
比如说我们要禁止使用百度搜索,可使用下面的过滤
acl deny_url url_regex //www\.baidu\.com/s
http_access deny deny_url
但是实际运行发现这个功能对https网站不起作用,对于https网站,url只能得到www.baidu.com:443这样的形式,由于ssl的限制无法得到正确的url。
要得到正确的url,必须使用ssl-bump,原理自己查资料,这里只讲实际操作
参照https://wiki.squid-cache.org/ConfigExamples/Intercept/SslBumpExplicit
1.创建动态证书存放目录
cd /etc/squid mkdir ssl_cert chown squid:squid ssl_cert chmod 700 ssl_cert cd ssl_cert
2.创建自签名证书
openssl req -new -newkey rsa:2048 -sha256 -days 3650 -nodes -x509 -extensions v3_ca -keyout myCA.pem -out myCA.pem
3.创建浏览器证书
openssl x509 -in myCA.pem -outform DER -out myCA.der
4.创建并初始化证书缓存目录
/usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db -M 4MB chown squid:squid -R /var/lib/ssl_db
ssl_crtd 的目录可能有变化,需要自己去查找
5.设置ssl-bump对象文件
vi /etc/squid/ssl_cert/bump_sites.txt
输入
www.baidu.com
6.修改conf
http_port 8000 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/my.pem
# Bumped requests have relative URLs so Squid has to use reverse proxy
# or accelerator code. By default, that code denies direct forwarding.
# The need for this option may disappear in the future.
always_direct allow all
acl bump_sites dstdomain "/etc/squid/ssl_cert/bump_sites.txt"
#ssl_bump none broken_sites
#ssl_bump bump all
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump bump_sites
启动后,文章最上面url_regex就能生效了
***********注意***********
一定要关闭selinux,否则会出错
The ssl_crtd helpers are crashing too rapidly