使用加密的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 ...
随机推荐
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
还是畅通工程 Time Limit: 4000/2 ...
- MySql中的concat()相关函数
concat 函数的基本应用一: SQL CONCAT函数用于将两个字符串连接起来,形成一个单一的字符串.试试下面的例子: SQL> SELECT CONCAT('FIRST ', 'SECON ...
- smokeping网络监控
一.smokeping介绍 我们在选择机房的时候,如何知道这个机房的网络情况,这个时候就要用到网络监控软件:smokeping 本文主要介绍如何使用smokeping来监控idc机房的网络质量情况,从 ...
- [Python爬虫] 之二十五:Selenium +phantomjs 利用 pyquery抓取今日头条网数据
一.介绍 本例子用Selenium +phantomjs爬取今日头条(http://www.toutiao.com/search/?keyword=电视)的资讯信息,输入给定关键字抓取资讯信息. 给定 ...
- JS断点调试
断点调试在这种场景下能发挥很大的作用.上手这个办法也利益于我以前玩VB编程时也习惯了IDE的单步/断点调试,一般的纯Web开发入门的程序员我没看到几个会用的.其实难度不大,只是他们不懂得主动去探索 首 ...
- orchard project 本地化
http://orchardproject.net/localization 本地化 果园的本地化管理是托管在一个外部服务( Crowdin), 的项目.公众和贡献是受欢迎的! 如何做出贡献 注册上 ...
- perl学习笔记——哈希
哈希 哈希是一种数据结构,它和数组的相似之处在于可以容难任意多的值并能按需取用,而他和数组的不同在于索引的方式,数组是以数字为索引而哈希则是以名字为索引. 哈希的键是唯一的,哈希的值可以重复. 哈希的 ...
- css3的nth-child选择器的具体探讨
css3的nth-child选择器的具体探讨 前言 在十年前開始的div+css布局兴起之时,我就開始了CSS的学习和实践.在当年,对于CSS选择器,基本上是没有什么选择性的,仅仅有ID选择器,CLA ...
- VIM-不常用或不知道的技巧
cc 清除一行 并在本行编辑, 同理 cw :32,65d 多行删除 g/pattern/d 删除包含特定字符的行 v/pattern/d 删除不包含指定字符的行 等同于 g!/pattern/d y ...
- Python 的错误和异常处理
语法错误 Python 的语法错误或者称之为解析错,如下: >>> while True print('Hello world') File "<stdin>& ...