使用加密的squid配合stunnel实现HTTP代理
现在大部分人都是用ssh tunnel来搭建socks5代理,其实这种方式效率并不高,ssh tunnel并不是为了做代理而存在的。一个比较好的方法是加密squid配合stunnel实现http代理。下面介绍在Archlinux下配置https squid和windows下配置stunnel的方法。
1.首先是Archlinux下安装squid。注意现在squid在AUR里,需要先用makepkg生成yaourt的安装包然后安装。此步骤不在本文讨论范围内。
2. 配置squid,主要包括添加访问权限,以及配置https监听模式。
2.1 创建证明书文件
| 
 1 
2 
3 
 | 
 openssl req -new > yourdomain.com.csr 
openssl rsa -in privkey.pem -out yourdomain.com.key 
openssl x509 -in yourdomain.com.csr -out yourdomain.com.crt -req -signkey yourdomain.com.key -days 3650 
 | 
然后将yourdomain.com.crt和yourdomain.com.key拷贝到/etc/squid目录下(或其他目录)。
2.2 添加squid用户
这一步是生成用户名密码对,同时将密码用hash函数处理。用于squid的用户认证。
| 
 
1 
 | 
 
htdigest 
-c /etc/squid/users yourdomain.com yourusername  | 
2.3 配置squid.conf
下面给出与本文要实现功能有关的配置参数:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
 | 
 auth_param digest program /usr/lib/squid/digest_file_auth -c /etc/squid/users 
auth_param digest children 3 startup=1 idle=2 
auth_param digest realm MyRealm 
acl users proxy_auth REQUIRED 
http_access allow users 
http_access deny all 
https_port XXXXX cert=/etc/squid/yourdomain.com.crt key=/etc/squid/yourdomain.com.key 
 | 
其中,MyRealm可以随便起名,XXXXX是你要squid监听的端口号。同时要注意”http_access deny all”这行要放在所有其他的http_access语句之后。
2.4 启动squid
Archlinux下可以用下面命令启动squid:
| 
 
1 
 | 
 
systemctl 
start squid.service  | 
然后运行下面命令检查squid的配置是否正确,如果正确则无任何返回信息:
| 
 1 
 | 
 squid -k check 
 | 
3. 配置stunnel
下面开始配置Windows端(客户端)的stunnel,将https流量转换成http,实现http代理功能。
编辑stunnel.conf,注释掉所有行,然后加入下面配置参数:
| 
 
1 
2 
3 
4 
 | 
 
client 
= yes 
[ssl2http] 
accept 
= 127.0.0.1:8080 
connect 
= xxx.xxx.xxx.xxx:XXXXX  | 
其中,xxx.xxx.xxx.xxx是运行squid程序的机器IP,XXXXX是之前配置的监听端口号。
4. 测试
现在大功告成,将浏览器配置成使用地址为“127.0.0.1”,端口为8080的HTTP代理,然后就去twitter、facebook测试一下吧!
如有疑问,欢迎回复讨论。
使用加密的squid配合stunnel实现HTTP代理的更多相关文章
- Nginx和Squid配合搭建的Web服务器前端系统
		
这个架构是目前我个人觉得比较稳妥并且最方便的架构,易于多数人接受: 前端的lvs和squid,按照安装方法,把epoll打开,配置文件照搬,基本上问题不多. 这个架构和app_squid架构的区别,也 ...
 - squid详解(正向代理、透明代理、反向代理)
		
squid http://www.squid-cache.org/ --官方网址 squid软件主要有两大应用:1,代理上网(正向代理,透明代理) 2,网站静态页面缓存加速(反向代理) 三种代理类型: ...
 - 用squid做http/https正向代理
		
0.环境准备 VM1(server):nat-192.168.12.128 bridge-192.168.124.128 VM2(client):bridge-192.168.124.129 在VMw ...
 - 理解squid的正向和反向代理
		
1.相同点: 访问的走向都是:客户端 -> 代理服务器 ->真实服务器 ->代理服务器->客户端 2.不同点:正向代理语义上更侧重于,让代理服务器去帮忙请求某个网址.让代理服务 ...
 - Minio 集群扩容存储空间,配合nginx 负载反向代理后端minio 集群服务器,提升高可用性
		
环境:Centos 7 软件:minio,Etcd 需求:通过联盟两个集群实例,实现水平扩容存储空间问题: 服务器使用阿里云,一共4台服务器(官方说明最好4台服务器做分布式,测试节省服务器所以我们使 ...
 - windows下nginx配合nodejs进行反向代理
		
本文原创,转载请附上原作者链接!https://www.cnblogs.com/LSWu/articles/14848324.html 1.安装node.js 从node.js官网上下载node.js ...
 - squid+stunnel+用户密码认证的三种玩法
		
没办法,应用越来越深入,就会越来越多要求. squid+stunnel+用户密码认证的场景至少以下三个,我会遇到. 1,标准玩法 在服务器上建一个SQUID,加密码认证,然后,其它人通过它上网.(不要 ...
 - Stunnel服务端
		
Stunnel on Debian GNU/Linux 6 (squeeze) 传统的POP3, SMTP, Samba等服务,都是不加密的协议(即在网络上明文传输数据),通过stunnel,可以将访 ...
 - 公司内部SQUID代理HTTPS访问资料网站
		
同事安装SQUID,我按如下方法加密: 参考URL: http://www.tuicool.com/articles/iYv2YfU 众所周知,在国内访问国外互联网经常无法访问,比如要找资料googl ...
 
随机推荐
- 用fastjson反序列化 带泛型的类
			
ServiceResult<User> serviceResult = JSON.parseObject(obtainResult, new TypeReference<Servic ...
 - JQuery获取第几个元素和判断元素在第几个
			
HTML代码: <ul> <li>jQuery判断当前元素是第几个元素示例</li> <li>jQuery获取第N个元素示例</li> &l ...
 - NHibernate官方文档中文版——持久化类(Persistent Classes)
			
持久化类是一个应用程序中的类,主要用来实现业务逻辑(例如,在电商应用中的客户和订单类).持久化类,就像它的名字一样,生命周期短暂并且用来持久化的据库对象实例. 如果这些类的构造能够依照一些简单的原则, ...
 - MythXinWCF通用宿主绿色版V1.1
			
更新内容:宿主的唯一编号和名称可以输入符号"."日志文本框增加滚动条,并且总是显示文本末端增加启动方式选择:1.手动启动 2.跟随系统启动 最新下载地址: http://pan.b ...
 - Oracle数据库冷备份与恢复(救命稻草)
			
说明,只要是同样系统,同样数据库版本,是可以做冷备恢复.冷备份数据必须是数据库不在open状态下.以oracle11gR2为例. 一.冷备份与冷恢复 具体步骤如下. 1. 复制旧的数据库文件 (1) ...
 - 【JSP EL】el表达式判断是否为null
			
后台程序放入Model中,从前台el表达式取出来非常方便,但是如果需要处理 当数据为null的时候,怎么办,不为null的时候,怎么办:这个怎么处理呢? <span class="us ...
 - CSS3:animation动画
			
animation只应用在页面上已存在的DOM元素上,学这个不得不学keyframes,我们把他叫做“关键帧”. keyframes的语法法则: @keyframes flash { from{ le ...
 - 微信php分享页面自定义标题与内容
			
1.因为现在分享页面,发给朋友或者朋友圈都没办法自定义标题.图片和内容,所以必须要有微信公众号 2.如果有微信公众号可直接登录,如果没有要注册,注册完或者登录了 3.查看你的权限,左侧最下面开发的接口 ...
 - 更改Windows用户文件夹(Users)默认位置到其它盘
			
一.把 C盘Users文件夹里的用户数据,迁移到D盘Users文件夹中 系统环境:windows7 1.mklink命令详解 C:>mklink 创建符号链接. MKLINK [[/D] | [ ...
 - Android手掌抑制功能的实现
			
近期须要实现一个功能,在Activity中有一个手写区域,为了更好的用户体验,须要满足即使整个手掌放在屏幕上时(android平板,屏幕比較大)也仅仅响应手写区域内的操作,即在支持多点触控的情况下,仅 ...