圆海博客-探寻心灵的宁静

您现在的位置是:首页 > 博客 > 正文

博客

https代理服务器怎么搭?加密协议配置教程

2026-09-18 11:54:55博客
很多做数据采集、跨境业务或运维监测的朋友,第一步都会碰到同一个问题:代理搭好了,流量却是”裸奔”的。HTTP代理在传输过程中不加密,账号、Cookie、采集内容都可能被链路中间……

很多做数据采集、跨境业务或运维监测的朋友,第一步都会碰到同一个问题:代理搭好了,流量却是”裸奔”的。HTTP代理在传输过程中不加密,账号、Cookie、采集内容都可能被链路中间环节看到。而 HTTPS代理 通过TLS加密协议给整条链路上了锁,是目前更稳妥的选择。这篇文章就用最通俗的方式,带你从零搭一台支持加密协议的代理服务器,每一步都给出可直接复制的配置代码。

一、HTTPS代理和HTTP代理,到底差在哪?

打个比方:HTTP代理像一张明信片,路上谁都能看;HTTPS代理像一封密封信,只有收件人能拆。当你通过HTTPS代理访问目标网站时,客户端会先和代理服务器完成TLS握手,建立加密通道后再转发请求,中间人只能看到”你在和代理通信”,却看不到具体传输了什么内容。

对比项 HTTP代理 HTTPS代理
传输方式 明文传输 TLS加密传输
内容可见性 链路中间可读取 仅通信双方可见
防篡改能力 无校验,易被篡改 带完整性校验
适用场景 内网调试、临时测试 公网采集、长期业务

二、搭建前的准备工作

动手之前,先备齐四样东西,缺一样都会卡在半路:

一台服务器: 任意有公网IP的云服务器即可,系统推荐 Ubuntu 或 Debian,配置要求不高,1核1G就能跑动。

开放端口: 本文统一用 3128 端口,记得提前在云平台的安全组里放行,这是新手最容易漏的一步。

一个域名(可选): 后续如果想换正规CA证书需要域名;测试阶段用自签名证书完全够用。

代理软件: 这里选 Squid,老牌开源代理软件,原生支持HTTPS端口,配置简单、文档齐全。

另外提醒一句:如果你不想维护服务器,只是需要现成的加密代理IP,可以直接跳到第七节看托管方案。

三、第一步:生成TLS证书

加密的前提是证书。测试环境用自签名证书最快,一条 openssl 命令搞定:

# 安装 OpenSSL(多数系统已自带)
sudo apt update && sudo apt install openssl -y

# 创建证书目录
sudo mkdir -p /etc/proxy/certs && cd /etc/proxy/certs

# 生成自签名证书,有效期 365 天
sudo openssl req -x509 -newkey rsa:2048 -sha256 -days 365 \
  -nodes -keyout proxy.key -out proxy.crt \
  -subj "/CN=proxy.example.com"

# 把证书和私钥合并成一个文件,供代理软件读取
sudo cat proxy.crt proxy.key | sudo tee proxy.pem > /dev/null
sudo chmod 600 proxy.key proxy.pem

几个关键参数说明:-days 365 是证书有效期;-nodes 表示私钥不加密,避免代理软件每次启动还要输密码;-subj 里的 CN 填你的服务器域名或IP。生产环境建议申请正规CA证书,客户端体验会更好。

四、第二步:安装Squid并启用加密端口

sudo apt install squid -y

然后编辑主配置文件 /etc/squid/squid.conf,核心就两件事:开启HTTPS监听端口、控制谁能用。

# /etc/squid/squid.conf 核心配置

# 启用 HTTPS 代理端口,并挂载上一步生成的证书
https_port 3128 tls-cert=/etc/proxy/certs/proxy.pem

# 只允许指定 IP 使用代理(换成你自己的出口 IP)
acl my_client src 203.0.113.10
http_access allow my_client

# 其余请求全部拒绝
http_access deny all
# 保存后重启并设置开机自启
sudo systemctl restart squid
sudo systemctl enable squid

# 确认端口已处于监听状态
ss -tlnp | grep 3128

看到 3128 端口处于 LISTEN 状态,说明加密端口已经起来了。

五、第三步:加上账号密码认证

光靠IP白名单还不够稳,尤其当你的出口IP经常变化时。给代理加一层账号密码,安全性直接上一个台阶:

# 安装密码工具并创建账号(会提示输入两次密码)
sudo apt install apache2-utils -y
sudo htpasswd -c /etc/squid/passwd proxyuser

然后在 squid.conf 中追加认证配置,注意要放在 http_access deny all 之前,否则不会生效:

# 账号密码认证
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm Proxy Login
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
sudo systemctl restart squid

六、第四步:放行防火墙,验证加密链路

# 放行 3128 端口
sudo ufw allow 3128/tcp

万事俱备,用 curl 做一次端到端验证:

# 方式一:命令行直接指定代理和账号
curl -k -x https://服务器IP:3128 \
     -U proxyuser:你的密码 \
     https://httpbin.org/ip -v
# 方式二:写入环境变量,全局生效
export https_proxy="https://proxyuser:你的密码@服务器IP:3128"
curl https://httpbin.org/ip

如果返回的JSON里显示的是服务器IP,并且 curl 的详细输出里能看到 TLS握手成功 的日志,说明整条加密链路已经打通。其中 -k 是测试阶段跳过自签名证书校验用的,正式使用时建议把 proxy.crt 导入客户端的信任列表。浏览器使用的话,在网络设置里选择HTTPS代理,填入服务器IP、端口和账号密码即可。

排查小技巧:如果连不上,按”安全组 → 防火墙 → Squid状态 → 账号密码”的顺序逐层检查,90%的问题都出在这四个地方。

七、自建 vs 托管代理服务,怎么选?

自己搭一台HTTPS代理,胜在完全可控、成本透明,适合有运维能力、只需要固定出口IP的团队。但如果你需要大量不同地区的IP、追求高匿名和开箱即用,自建的成本会迅速上升——一台服务器只有一个IP,证书续期、防滥用、可用率监控全都要自己扛。

对比维度 自建HTTPS代理 光络云代理服务
上手成本 需运维经验,配置繁琐 注册获取接入信息即可用
IP资源 单台服务器仅一个出口IP 动态住宅、静态ISP等多类型IP池
匿名度 取决于自己的配置 高匿名,隐藏真实客户端信息
加密支持 需自行配置TLS 原生支持HTTPS代理协议
稳定性维护 证书续期、故障处理全靠自己 官方团队负责运维保障

光络云是定位全球网络基础设施及数据服务商的品牌,产品线覆盖国内和海外,包括动态住宅代理、静态ISP代理、TikTok解决方案等。以动态住宅代理为例,支持HTTPS加密接入,IP按需轮换,适合数据采集、电商运营、广告验证等业务场景。需要特别说明的是:光络云的代理IP需要用户自身具备海外网络环境才能使用(TikTok专线解决方案除外),接入前请先确认自己的网络条件。

常见问题

Q: 自签名证书会被浏览器提示不安全吗?
会。自签名证书没有经过公共CA认证,浏览器首次使用时会提示风险,手动信任后即可继续。如果用于正式业务,建议申请正规CA证书,或直接选择原生支持HTTPS协议的托管代理服务。

Q: HTTPS代理能访问HTTPS网站吗?
能。客户端会通过CONNECT方法请求代理建立隧道,之后浏览器与目标网站之间再进行端到端加密,代理只负责转发流量,看不到具体内容。

Q: 代理搭好了,但速度很慢怎么办?
先检查服务器带宽和负载,再确认是否开启了不必要的日志或缓存规则。如果对速度和稳定性要求高,自建单点往往不是最优解,可以考虑光络云这类有专业线路优化的代理服务。

Q: 光络云的代理需要什么样的使用条件?
光络云的代理IP需要用户自身具备海外网络环境才能使用,TikTok专线解决方案除外。注册后按官方文档获取接入信息,配置到程序或客户端即可。

Q: 证书过期了代理会怎样?
证书到期后客户端握手会失败,代理无法继续使用。建议设置日历提醒,在到期前用同样的 openssl 命令重新签发,替换文件并重启 Squid 即可恢复。