由于经常去的一些国外网站如Google、Blogspot、Wordpress被“出现了技术问题”,访问不了,于是我在自己的DigitalOcean云主机上搭建了一个 Squid代理服务器用于*。Squid支持HTTP、HTTPS代理,因此能够满足日常访问国外某些网站的需求。然而如果直接使用HTTP连接Squid是明文传输的,在第一次使用时,会马上“出现技术问题”,因此需要使用 stunnel加密代理通道。具体配置步骤如下,云主机的Linux发行版是Ubuntu
14.10 x32,如果你使用的是其他发行版,包管理与配置文件路径会略有不同。
安装必要的软件
安装apache2-utils用于HTTP认证文件的生成,
apt-get install apache2-utils -y
安装Squid,
apt-get install squid3 -y
安装stunnel,
apt-get install stunnel4 -y
配置Squid
生成HTTP认证文件,输入对应的密码。这个认证文件用于之后HTTP代理的认证登录,如果不需要登录认证,可以略过。
htpasswd -c /etc/squid3/squid.passwd <登录用户名>
修改Squid默认配置,配置文件位于 /etc/squid3/squid.conf
。
1. 修改监听地址与端口号
找到 TAG: http_port
注释,把其下方的
# Squid normally listens to port 3128
http_port 3128
中 http_port
修改为 127.0.0.1:3128
,使得Squid只能被本地(127.0.0.1)访问。此处可以修改为监听其他端口号。
2. 修改访问权限与HTTP认证(可选)
若不需要添加HTTP认证,只需将 http_access
修改为
deny all http_access
即可,无需下列的操作。
allow all
使用如下命令生成认证文件,
htpasswd -c /etc/squid3/squid.passwd <登录用户名>
再次打开Squid配置文件 /etc/squid3/squid.conf
,找到 TAG: auth_param
注释,在其下方添加,
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/squid.passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
找到 TAG: acl
,在其下方添加,
acl ncsa_users proxy_auth REQUIRED
找到 TAG: http_access
,在其下方添加,使得只允许经过认证的用户访问,
http_access deny !ncsa_users
http_access allow ncsa_users
3. 重启Squid
service squid3 restart
配置stunnel
接下来,我们需要在Squid上添加一层加密。
生成公钥和私钥
生成私钥( privatekey.pem
):
openssl genrsa -out privatekey.pem 2048
生成公钥( publickey.pem
):
openssl req -new -x509 -key privatekey.pem -out publickey.pem -days 1095
(需要注意的是, Common Name
需要与服务器的IP或者主机名一致)
合并:
cat privatekey.pem publickey.pem >> /etc/stunnel/stunnel.pem
修改stunnel配置
新建一个配置文件 /etc/stunnel/stunnel.conf
,输入如下内容
client = no
[squid]
accept = 4128
connect = 127.0.0.1:3128
cert = /etc/stunnel/stunnel.pem
配置中指定了stunnel所暴露的HTTPS代理端口为4128,可以修改为其他的值。
修改 /etc/default/stunnel4
配置文件中 ENABLED
值为1。
ENABLED=1
重启stunnel
service stunnel4 restart
至此,服务器端已配置完成了。
本地浏览器配置
添加证书到受信任的根证书颁发机构列表中
以Windows下Chrome浏览器为例,将服务器上的公钥 publickey.pem
下载至本地,重命名至 publickey.crt
,在Chrome中依次点击
“设置” - “显示高级设置” - “HTTP/SSL” - “管理证书”,在“受信任的根证书颁发机构”选项卡中“导入”这个crt证书就完成了。
代理客户端配置
将本地的代理客户端指向 https://<你的服务器IP或主机名>:4128
,这里的IP或主机名和生成公钥时的 Common Name
一致,端口为stunnel的端口。如果有配置HTTP认证的话,需要在客户端中配置对应的用户名和密码。如果没有HTTP客户端的话,推荐使用Chrome的插件 Proxy
SwitchyOmega(使用教程可以参考 Github上的Wiki)。
使用Squid搭建HTTPS代理服务器的更多相关文章
-
Squid 搭建正向代理服务器
Squid 是一款缓存代理服务器软件,广泛用于网站的负载均衡架构中,常见的缓存服务器还有varnish.ATS等. 正向代理服务器可满足内网仅有一台服务器可以上网,而要供内网所有机器上网的需求,也可以 ...
-
centos7.3使用squid搭建代理服务器
centos7.3使用squid搭建代理服务器 1 安装 yum install squid 2 编辑 vi /etc/squid/squid.conf 3 设置 最底部增加 如下http_acces ...
-
centos7.6_x86_64使用Squid搭建代理服务器让windows上网
centos7.6_x86_64使用Squid搭建代理服务器让windows上网 windows机器很多站点访问受限,可以在没有限制外网的机器上面搭建代理服务器,其它电脑可以配置代理通过这台不受限制的 ...
-
使用poco 的NetSSL_OpenSSL 搭建https 服务端,使用C++客户端,java 客户端访问,python访问(python还没找到带证书访问的代码.)
V20161028 由于项目原因,需要用到https去做一些事情. 这儿做了一些相应的研究. 这个https 用起来也是折腾人,还是研究了一周多+之前的一些积累. 目录 1,java client 通 ...
-
Nginx搭建https服务器
HTTPS简介 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单来讲就是HTTP的安全版.即H ...
-
NodeJS搭建HTTPS服务器
[NodeJS搭建HTTPS服务器] http://cnodejs.org/topic/54745ac22804a0997d38b32d
-
win10系统iis下部署搭建https (ssl/tls)本地测试环境
有时想要把公司的某些XX项目部署成https站点,是为了在传输层加密传输,防止他人嗅探站点重要数据信息,平常我们使用的http方式都是明文方式传输的很不安全,容易被他人窃取.而有些时候要在本地搭建ht ...
-
如何申请https证书、搭建https网站
如何申请https证书.搭建https网站 随着国内搜索引擎巨头百度启用全站https加密服务,全国掀起了网站https加密浪潮.越来越多的站点希望通过部署https证书来解决“第三方”对用户隐私的嗅 ...
-
Nginx搭建反向代理服务器
[大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器 一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受int ...
随机推荐
-
Emacs 之列编辑模式
// */ // ]]> Emacs 之 列编辑模式 Table of Contents 1. Emacs 下列编辑模式常用命令 2. 可以参考 1 Emacs 下列编辑模式常用命令 先mark ...
-
FileItem类 用法详解
FileItem类的常用方法 1.boolean isFormField().isFormField方法用来判断FileItem对象里面封装的数据是一个普通文本表单字段,还是一个文件表单字段.如果是 ...
-
PHP学习心得(二)——实用脚本
<?php 来表示 PHP 标识符的起始,然后放入 PHP 语句并通过加上一个终止标识符 ?> 来退出 PHP 模式 调用函数phpinfo(),将会看到很多自己系统的信息,以及预定义变量 ...
-
关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
-----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...
-
java开源即时通讯软件服务端openfire源码构建
java开源即时通讯软件服务端openfire源码构建 本文使用最新的openfire主干代码为例,讲解了如何搭建一个openfire开源开发环境,正在实现自己写java聊天软件: 编译环境搭建 调试 ...
-
Windows Server 2016离线安装.NET Framework 3.5
windows server 2016默认是不安装.netframework3.5的,可以在添加删除程序中单独添加.但是有时候系统安装文件不在的时候,找不到安装程序就不能安装成功. 这时候单独下载do ...
-
Jenkins之Linux和window配置区别
一.命令行配置 windows: java -jar .\libs\gen-html-report-1.0-SNAPSHOT.jar .\reports_%BUILD_NUMBER%.html .\t ...
-
[代码]--db2中left()函数和right()函数对应oracle中的substr()函数
DB2 LEFT.RIGHT函数 语法:LEFT(ARG,LENGTH).RIGHT(ARG,LENGTH) LEFT.RIGHT函数返回ARG最左边.右边的LENGTH个字符串,ARG可以是CHA ...
-
Pandas 命令整理
在网上看到一个整理的很好的pandas命令合集,转一份供自己查找与参考
-
HDU 2109 Fighting for HDU
http://acm.hdu.edu.cn/showproblem.php?pid=2109 Problem Description 在上一回,我们让你猜测海东集团用地的形状,你猜对了吗?不管结果如何 ...