Stunnel是一个“历史悠久”的隧道工具,从其官方网站(www.stunnel.org)风格可见一斑。Stunnel官方「man手册」非常详细,但在实际配置过程中用不到过多的选项。本文结合实际部署过程中可能会用到的主要选项加以列举说明。
Stunnel配置文件采用ini文件结构,配置定义使用 “配置名 = 值”(Option Name = Value),stunnel自4.0开始废弃了包括“verify”等在内的配置选项,所有已经废弃但仍可使用的选项本文均不列入。Stunnel配置属性/选项分为全局和服务两类,部分服务选项也可以作为全局选项使用,更为详细的内容可参考官方man手册。
1.全局属性/Global Options
compression = deflate | zlib
默认为no,即不启用压缩
debug = LEVEL
默认为5,即notice,所有低于5的信息均被记录入日志。各级别代码分别为emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), or debug (7)
output = FILE
日志输出文件,当前版本默认为/var/log/stunnel4/stunnel.log。
foreground = yes | quiet | no (仅unix)
默认为no,后台运行。
pid = FILE (仅unix)
pid文件,当前版本默认定义在/var/run/stunnel4/目录下。
2.服务属性/Service Options
accept = [HOST:]PORT
监听地址(主机)与端口,省略地址即监听本机所有的IPv4地址,使用“:::PORT”则监听本机所有的IPv4和IPv6地址。
connect = [HOST:]PORT
指定连接的远程主机地址及端口,省略远程主机地址为本地localhost,单个服务部分中允许多个连接选项。如果主机解析为多个地址和/或指定了多个连接选项,则使用轮循机制算法选择连接的远程地址。
CAfile = CA_FILE
加载可信CA证书文件,一般用于客户端配置定义服务端证书(公钥)。
cert = CERT_FILE
加载本机证书文件。
exec = EXECUTABLE_PATH
执行本地程序,exec 路径相对于 chroot 目录(如果已指定)。
execArgs = $0 $1 $2 ...
exec 的参数,包括程序名称 ($0)。目前不支持引用。参数用任意数量的空格分隔。
key = KEY_FILE
加载本机私钥文件。
ciphers = CIPHER_LIST
指定加密算法,此选项不会影响 TLSv1.3 密码套件。
client = yes | no
是否为客户端模式,默认为no,因此,服务端可省略。
options = SSL_OPTIONS
SSL协议选项,默认值为options = NO_SSLv2 以及 options = NO_SSLv3
protocol = PROTO
指定使用的协议,包括cifs、capwin、capwinctrl、connect、imap、ldap、nntp、pgsql、pop3、proxy、smtp、socks,其中capwinctrl、connect、nntp仅支持客户端模式。
PSKsecrets = FILE
指定包含 PSK 标识和相应密钥的文件,文件的每一行采用“IDENTITY:KEY”的格式。十六进制KEY会自动转换为二进制形式,密钥的长度至少为 16 个字节,因此密钥至少需要 32 个十六进制字符(0-F)。
redirect = [HOST:]PORT
在基于证书的身份验证失败时重定向 TLS 客户端连接,仅服务端模式有效。
renegotiation = yes | no
是否支持TLS协商,默认为yes。
requireCert = yes | no
要求客户端提供证书。一般仅仅在服务端使用,等效于同时指定verifyPeer=yes和verifyChain=yes。默认为no。
securityLevel = LEVEL
指定安全(加密)等级,默认值为2,1-5级分别为:
0-全部接受
1-不接受SSLv2,RSA/DSA/DH密钥不低于1024位,ECC密钥不低于160位,禁止将 MD5 用于 MAC 的任何密码套件
2-不接受SSLv2/3,RSA/DSA/DH密钥不低于2048位,ECC密钥不低于224位,禁止使用 RC4 的任何密码套件
3-TLS版本不低于1.1,RSA/DSA/DH密钥不低于3072位,ECC密钥不低于256位,禁止使用不提供前向保密的密码套件,禁用Session Tickets
4-TLS版本不低于1.2,RSA/DSA/DH密钥不低于7680位,ECC密钥不低于384位,禁止使用 SHA1 作为 MAC 的密码套件
5- RSA/DSA/DH密钥不低于15360位,ECC密钥不低于512位
sslVersion = SSL_VERSION
指定ssl版本,可选择的值包括all、SSLv2、SSLv3、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3。
sslVersionMax = SSL_VERSION
指定ssl最高版本。
sslVersionMin = SSL_VERSION
指定ssl最低版本,默认为TLSv1。
transparent = none | source | destination | both (仅unix)
启用透明代理支持,需结合iptables配置和路由规则配置。
verifyChain = yes | no
验证由根CA开始的证书链,自签名根CA证书需要存储在使用 CAfile 指定的文件中,或者存储在使用 CApath 指定的目录中。默认为no。
verifyPeer = yes | no
验证对端证书,对端证书需要存储在使用 CAfile 指定的文件中,或存放在使用 CApath 指定的目录中。默认为no。
文章评论