以debian/ubuntu为例 ,使用apt安装stunnel4。
apt install stunnel -y
安装完成后,需要检查一下两个文件。
# /etc/sysctl.conf
net.ipv4.ip_forward=1
# /etc/default/stunnel4
ENABLE=1
# 使用 sysctl -p 命令即时永久生效
sysctl -p
生成证书
openssl req -nodes -new -days 365 -newkey rsa:2048 -x509 -keyout /etc/stunnel/2048key.pem -out /etc/stunnel/2048cert.pem
cd /etc/stunnel && openssl pkcs12 -export -in 2048cert.pem -inkey 2048key.pem -out 2048pks.p12
base64 2048pks.p12 > 2048pks.base64
配置stunnel.conf文件如下
syslog = no
debug = 3
output = /var/log/stunnel4/stunnel.log
pid = /var/run/stunnel4.pid
[stproxy]
;client = no
;connect = [host:]port
accept = 8443
cert = /etc/stunnel/2048cert.pem
key = /etc/stunnel/2048key.pem
;requireCert = yes
;CAfile = /etc/stunnel/ccert.pem
;CApath = /etc/stunnel/certs
protocol = socks
Stunnel配置文件中至少应包含一项服务 /service,用封号(;)作行注释。
这里的 “[stproxy]” 即指定了一项服务,“[stproxy]” 以上的为全局配置选项,以下的为 stproxy 服务配置选项。
client 指定了该服务是否为客户端,默认为 no,因此服务端可直接忽略或删除该行。
accept、connect 分别指定服务监听地址和端口、链接上级(代理服务端)的监听地址和端口,省略地址表示在所有接口的指定端口上监听,这里我们不使用 connect 行,由 stunnel 直接进行 socks 代理转发。
下面两行,在不使用 CApath 选项的前提下,cert、key 分别采用绝对路径指定了证书和私钥文件
surge 可以将 p12 证书 提取 pem 证书
cd /etc/stunnel/ && openssl pkcs12 -in apple.p12 -clcerts -nokeys -out apple.pem
去掉这两行注释
requireCert = yes
CAfile = /etc/stunnel/apple.pem
Surge 证书选择 2048pks.p12 证书