如何加密Squid与客户端的通讯?

Forward Proxy

1 前言

一个问题,一篇文章,一出故事。
笔者最近打算把正向代理用于外网的APP链接到内网使用,由于传统的客户端与反向代理服务器之间都是HTTP链接,这容易导致用户的信息泄露,于是整理此解决方案。
本章基于之前搭建的正向代理,如果你需要参阅,请参阅以下章节,

如何yum部署Squid?

2 最佳实践

2.1 服务环境

IP Address = 10.168.0.80
Gateway = 10.168.0.1
Operating System = Oracle Linux Server 9.0

Squid Client:
IP Address = 10.168.0.x
Operating System = any

2.2 创建服务端证书

2.2.1 创建Squid需要的证书以及证书库

mkdir /etc/squid/ssl_cert/
cd /etc/squid/ssl_cert/
openssl req -new -newkey rsa:2048 -sha256 -days 3650 -nodes -x509 -extensions v3_ca -keyout myCA.pem  -out myCA.pem

可见如下向导,

#...
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:GD
Locality Name (eg, city) [Default City]:DG
Organization Name (eg, company) [Default Company Ltd]:cmdschool Limited
Organizational Unit Name (eg, section) []:cmdschool
Common Name (eg, your name or your server's hostname) []:proxy.cmdschool
Email Address []:will@cmdschool.org

如果需要快速执行的命令,请使用如下命令,

openssl req -new -newkey rsa:2048 -sha256 -days 3650 -nodes -x509 -extensions v3_ca -keyout myCA.pem  -out myCA.pem -subj "/C=CN/ST=GD/L=DG/O=cmdschool Limited/CN=proxy.cmdschool"

然后,你需要执行以下命令,

/usr/lib64/squid/security_file_certgen -c -s /var/lib/ssl_db -M 4MB
chown -R squid:squid /var/lib/ssl_db/ /etc/squid/ssl_cert/

如果遇到如下错误提示,

/usr/lib64/squid/security_file_certgen: Cannot create /var/lib/ssl_db

你需要执行如下命令解决,

rm -rf /var/lib/ssl_db

2.2.2 创建Squid客户端需要的证书文件

cd /etc/squid/ssl_cert/
openssl x509 -in myCA.pem -outform DER -out myCA.der

2.2.3 配置Squid引入证书

vim /etc/squid/squid.conf

加入如下配置,

http_port 3128 ssl-bump cert=/etc/squid/ssl_cert/myCA.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB 

acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all

2.2.4 重启服务使配置生效

systemctl restart squid

2.2.5 命令行验证

openssl s_client -connect localhost:3128 --proxy localhost:3128

注:以上连接到代理并打印证书

2.3 代理客户端配置

2.3.1 导入正向代理的证书

单击Firefox的菜单【设置】
然后在查找中搜索关键字“证书”
然后单击【查看证书】->【证书机构】->【导入】
然后导入上面步骤生成的“myCA.der”证书文件并勾选【此证书可以标识网站】
单击【确定】即可完成配置

2.3.2 配置代理

单击Firefox的菜单【设置】
然后在查找中搜索关键字“网络设置”
然后单击【设置】->【手动配置代理】
填写“HTTP代理”的值,本章范例为“10.168.0.80”
填写“端口”的值,范例为“3128”
勾选【也将此代理用户HTTPS】
单击【确定】即可完成配置

参阅文档
=================
https://dev.to/suntong/about-ssl-bumping-3acf

https://wiki.squid-cache.org/Features/HTTPS

http://www.squid-cache.org/Doc/config/ssl_bump/

没有评论

发表回复

Forward Proxy
如何基于openSSH部署Socks代理服务?

1 前言 一个问题,一篇文章,一出故事。 笔者需要实现Socks代理服务以便于内网的电脑客户端可以通 …

Forward Proxy
如何修改Squid的日志格式?

1 前言 一个问题,一篇文章,一出故事。 笔者查看Squid的访问日志发现时间部分是时间戳,笔者感觉 …

Forward Proxy
如何配实现Squid多开实例同时运行?

1 前言 一个问题,一篇文章,一出故事。 笔者整理本文的原因是遇到Squid遇到需要在同一台服务器启 …