现在大部分人都是用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. hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)

    还是畅通工程                                                                            Time Limit: 4000/2 ...

  2. MySql中的concat()相关函数

    concat 函数的基本应用一: SQL CONCAT函数用于将两个字符串连接起来,形成一个单一的字符串.试试下面的例子: SQL> SELECT CONCAT('FIRST ', 'SECON ...

  3. smokeping网络监控

    一.smokeping介绍 我们在选择机房的时候,如何知道这个机房的网络情况,这个时候就要用到网络监控软件:smokeping 本文主要介绍如何使用smokeping来监控idc机房的网络质量情况,从 ...

  4. [Python爬虫] 之二十五:Selenium +phantomjs 利用 pyquery抓取今日头条网数据

    一.介绍 本例子用Selenium +phantomjs爬取今日头条(http://www.toutiao.com/search/?keyword=电视)的资讯信息,输入给定关键字抓取资讯信息. 给定 ...

  5. JS断点调试

    断点调试在这种场景下能发挥很大的作用.上手这个办法也利益于我以前玩VB编程时也习惯了IDE的单步/断点调试,一般的纯Web开发入门的程序员我没看到几个会用的.其实难度不大,只是他们不懂得主动去探索 首 ...

  6. orchard project 本地化

    http://orchardproject.net/localization 本地化 果园的本地化管理是托管在一个外部服务( Crowdin), 的项目.公众和贡献是受欢迎的! 如何做出贡献 注册上 ...

  7. perl学习笔记——哈希

    哈希 哈希是一种数据结构,它和数组的相似之处在于可以容难任意多的值并能按需取用,而他和数组的不同在于索引的方式,数组是以数字为索引而哈希则是以名字为索引. 哈希的键是唯一的,哈希的值可以重复. 哈希的 ...

  8. css3的nth-child选择器的具体探讨

    css3的nth-child选择器的具体探讨 前言 在十年前開始的div+css布局兴起之时,我就開始了CSS的学习和实践.在当年,对于CSS选择器,基本上是没有什么选择性的,仅仅有ID选择器,CLA ...

  9. VIM-不常用或不知道的技巧

    cc 清除一行 并在本行编辑, 同理 cw :32,65d 多行删除 g/pattern/d 删除包含特定字符的行 v/pattern/d 删除不包含指定字符的行 等同于 g!/pattern/d y ...

  10. Python 的错误和异常处理

    语法错误 Python 的语法错误或者称之为解析错,如下: >>> while True print('Hello world') File "<stdin>& ...