使用加密的squid配合stunnel实现HTTP代理

摘要:
一个比较好的方法是加密squid配合stunnel实现http代理。下面介绍在Archlinux下配置httpssquid和windows下配置stunnel的方法。用于squid的用户认证。

现在大部分人都是用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-inprivkey.pem-out yourdomain.com.key
openssl x509-inyourdomain.com.csr-out yourdomain.com.crt-req-signkey yourdomain.com.key-days3650

然后将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 children3startup=1idle=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-kcheck

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代理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jQuery(三)Java字节码常量池深入剖析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

10 深入kubernete落地实践深入101 ingress四层代理、session保持、定制配置、流量控制

深入Ingress-Nginx Deployment?   https 四层代理    访问控制 定制配置 项目 8-ingress 修改部署ds方式 Deployment 改成DaemonSet(ds)模式 #保存controller到文件 kubectl get deploy -n ingress-nginx nginx-ingress-control...

深入理解Android相机体系结构之3---相机服务层

一、简介 Camera Service被设计成一个独立进程,作为一个服务端,处理来自Camera Framework 客户端的跨进程请求,并在内部进行一定的操作,随后作为客户端将请求再一次发送至作为服务端的Camera Provider,整个流程涉及到了两个跨进程操作,前者通过AIDL机制实现,后者通过HIDL机制实现,由于在于Camera Provide...

编译安装squid3.1亲测

编译安装Squid2.6 1,设置“文件描述符”,并设置用户同时打开文件数量 # vi /usr/include/bits/typesizes.h # vi /usr/include/linux/posix_types.h 把里边的 #define __FD_SETSIZE 1024 改成 65536 2,设置当前环境 # ulimit -Hs 65536...

Python 爬虫入门(二)—— IP代理使用

上一节,大概讲述了Python 爬虫的编写流程, 从这节开始主要解决如何突破在爬取的过程中限制。比如,IP、JS、验证码等。这节主要讲利用IP代理突破。   1.关于代理   简单的说,代理就是换个身份。网络中的身份之一就是IP。比如,我们身在墙内,想要访问google、u2b、fb等,直接访问是404,所以要换个不会被墙的IP,比如国外的IP等。这个就...

【Mybatis进阶】动态代理

如果你想更深刻的理解Mybatis动态代理的原理,那么你应该先知道 什么是代理模式? 在没有动态代理的时候Mybatis是如何实现dao层的? 什么是代理模式 具体可以阅读笔者的博客—— 代理模式 在没有动态代理的时候Mybatis是如何实现dao层的 本篇博客基于mybatis的环境已经搭建完成,如果不知道如何搭建,具体可以阅读笔者的博客——【从零开...

Zabbix服务网页报错汇总

第1章 Zabbix简介及组成 1.1 zabbix简介 zabbix是一个基于web界面,提供分布式系统监视以及网络监视功能的企业级的开源解决方案。它可以监视各种网络参数,保证服务器自动的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题 1.1 zabbix组成 zabbix server和zabbix agent,可选组件zab...