现在大部分人都是用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代理的更多相关文章

  1. Nginx和Squid配合搭建的Web服务器前端系统

    这个架构是目前我个人觉得比较稳妥并且最方便的架构,易于多数人接受: 前端的lvs和squid,按照安装方法,把epoll打开,配置文件照搬,基本上问题不多. 这个架构和app_squid架构的区别,也 ...

  2. squid详解(正向代理、透明代理、反向代理)

    squid http://www.squid-cache.org/ --官方网址 squid软件主要有两大应用:1,代理上网(正向代理,透明代理) 2,网站静态页面缓存加速(反向代理) 三种代理类型: ...

  3. 用squid做http/https正向代理

    0.环境准备 VM1(server):nat-192.168.12.128 bridge-192.168.124.128 VM2(client):bridge-192.168.124.129 在VMw ...

  4. 理解squid的正向和反向代理

    1.相同点: 访问的走向都是:客户端 -> 代理服务器 ->真实服务器 ->代理服务器->客户端 2.不同点:正向代理语义上更侧重于,让代理服务器去帮忙请求某个网址.让代理服务 ...

  5. Minio 集群扩容存储空间,配合nginx 负载反向代理后端minio 集群服务器,提升高可用性

    环境:Centos  7 软件:minio,Etcd 需求:通过联盟两个集群实例,实现水平扩容存储空间问题: 服务器使用阿里云,一共4台服务器(官方说明最好4台服务器做分布式,测试节省服务器所以我们使 ...

  6. windows下nginx配合nodejs进行反向代理

    本文原创,转载请附上原作者链接!https://www.cnblogs.com/LSWu/articles/14848324.html 1.安装node.js 从node.js官网上下载node.js ...

  7. squid+stunnel+用户密码认证的三种玩法

    没办法,应用越来越深入,就会越来越多要求. squid+stunnel+用户密码认证的场景至少以下三个,我会遇到. 1,标准玩法 在服务器上建一个SQUID,加密码认证,然后,其它人通过它上网.(不要 ...

  8. Stunnel服务端

    Stunnel on Debian GNU/Linux 6 (squeeze) 传统的POP3, SMTP, Samba等服务,都是不加密的协议(即在网络上明文传输数据),通过stunnel,可以将访 ...

  9. 公司内部SQUID代理HTTPS访问资料网站

    同事安装SQUID,我按如下方法加密: 参考URL: http://www.tuicool.com/articles/iYv2YfU 众所周知,在国内访问国外互联网经常无法访问,比如要找资料googl ...

随机推荐

  1. &#x开头的是什么编码?

    在 Node 层利用 cheerio 解析网页时,输出的中文内容都是以 &#x 开头的一堆像乱码一样的东西,尝试过各种编码都无效,而且神奇的是,将这一堆“乱码”保存成网页后,通过浏览器打开又可 ...

  2. gzip压缩目录

    很遗憾,gzip不能针对整个目录进行压缩,只能递归压缩目录下的每一个文件. 当然,替代方案是只用tar进行打包,比如 tar cfz dir.tar.gz dirname

  3. debian 6软件更新源列表

    deb http://ftp.debian.org/debian/ squeeze main non-free contribdeb http://ftp.debian.org/debian/ squ ...

  4. 利用“进程注入”实现无文件复活 WebShell

    引子 上周末,一个好兄弟找我说一个很重要的目标shell丢了,这个shell之前是通过一个S2代码执行的漏洞拿到的,现在漏洞还在,不过web目录全部不可写,问我有没有办法搞个webshell继续做内网 ...

  5. python安全编程

    ##入门 这将是第一个一系列关于python编程的博客文章.python是一门非常强大的语言,因为它有信息安全社区的支撑.这意味着很多工具都是由python编写并且可以在脚本中调用很多模块.使用模块的 ...

  6. Chrome 37 Beta: 使用Windows的DirectWrite和支持<dialog>元素

    今天的Chrome Beta 发布版包含了许多新的开发者特性.这些特性帮助你制作更丰富的.更迅速的和更引人入胜的网页内容以及应用程序,尤其是移动设备上.除非特别指出,否则下面描述的变化对Android ...

  7. hibernate学习系列-----(6)hibernate对集合属性的操作之Set集合篇

    先说一段废话吧,本打算每天把所学的知识总结为博客的,但是昨天为什么没有写呢?没有学习吗?No,那是为什么?贪玩,对,这位同学说对了,老实说昨天感觉身体不怎么舒服,大家都知道,这其实就是为自己懒找借口, ...

  8. android studio 警告 synchronization on non-final field

    测试代码如下: public class SyncNonFinalField { private Object object = new Object(); public void start() { ...

  9. Js中数组的追加

    Concat arrayObject.concat(arrayX,arrayX,......,arrayX) 常用于 加载更多 ,数组的追加.

  10. Web service--百度百科

    Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...