stunnel是一个非常简单灵活的传输层加密工具。它具有Server模式和Client模式。

最简单的Server端配置只需要如下选项(其他uid/gid什么的就用默认的了):

# cert/key事先用openssl生成
cert = /etc/stunnel/openssl/server.crt
key = /etc/stunnel/openssl/server.key

[https]
accept = 10443
connect = 80

Client端如下:

[https]
client = yes
accept = 10080
connect = <server_ip>:10443

这个小例子假定有一台HTTP伺服器监听在80端口。在这里Client的功能是将用户发送到10080的HTTP请求加密后发送到Server的10443端口。而Server的功能是将10443端口接收到的加密信息解密后发送到80端口。所以访问Client的10080端口实际上相当于访问Server的80端口,但中间的传输是加密的。当然,如果Server允许外部机器访问其10443端口,也可以用HTTPS直接访问该端口。

Links: