Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.8.2. 将 stunnel 配置为 TLS wrapper

要配置 stunnel,请按照以下步骤执行:
  1. 无论您使用何种服务,您都需要适用于 stunnel 的有效证书。如果您没有合适的证书,您可以向认证机构申请以获得证书,或者创建自签名证书。
    警告
    对于生产环境中运行的服务器,始终使用证书颁发机构签名的证书。自签名证书仅适用于测试用途或专用网络。
    有关证书颁发机构授予的证书的更多信息,请参阅 第 4.7.2.1 节 “创建证书签名请求”。另一方面,要为 stunnel 创建自签名证书,请输入 /etc/pki/tls/certs/ 目录并以 root 用户身份输入以下命令:
    certs]# make stunnel.pem
    回答所有问题以完成此过程。
  2. 当您有证书时,请为 stunnel 创建配置文件。它是一个文本文件,其中的每一行都指定选项或服务定义的开头。您还可以在 文件中保留注释和空行,以提高其可辨识性,其中注释以分号开头。
    stunnel RPM 软件包包含 /etc/stunnel/ 目录,您可以在其中存储配置文件。虽然 stunnel 不需要文件名或其扩展名的任何特殊格式,但请使用 /etc/stunnel/stunnel.conf。以下内容将 stunnel 配置为 TLS 打包程序:
    cert = /etc/pki/tls/certs/stunnel.pem
    ; Allow only TLS, thus avoiding SSL
    sslVersion = TLSv1
    chroot = /var/run/stunnel
    setuid = nobody
    setgid = nobody
    pid = /stunnel.pid
    socket = l:TCP_NODELAY=1
    socket = r:TCP_NODELAY=1
    
    [service_name]
    accept = port
    connect = port
    TIMEOUTclose = 0
    或者,您可以通过将包含 sslVersion = TLSv1 的行替换为以下行来避免 SSL:
    options = NO_SSLv2
    options = NO_SSLv3
    这些选项的用途如下:
    • cert - 证书的路径
    • sslVersion - SSL 的版本;请注意,您可以在此处使用 TLS,即使 SSL 和 TLS 是两个独立的加密协议
    • chroot - 为提高安全性,更改了 stunnel 进程运行的根目录
    • setuid, setgid - stunnel 进程作为运行的用户和组; nobody 是一个受限的系统帐户
    • pid - stunnel 保存其进程 ID 的文件(相对于 chroot
    • socket - 本地和远程套接字选项;在本例中,禁用 Nagle 的算法来提高网络延迟
    • [service_name] - 服务定义的开头;此行下方使用的选项仅适用于给定服务,而上面的选项则全局影响 stunnel
    • accept - 要侦听的端口
    • connect - 要连接的端口;这必须是您正保护的服务使用的端口
    • TIMEOUTclose - 从客户端等待 close_notify 警报的秒数; 0 指示 stunnel 完全不要等待
    • options - OpenSSL 库选项

    例 4.3. 保护 CUPS

    要将 stunnel 配置为 CUPS 的 TLS 打包程序,请使用以下值:
    [cups]
    accept = 632
    connect = 631
    您可以使用您喜欢的任何空闲端口而不是 632631CUPS 通常使用的端口。
  3. 创建 chroot 目录,并为 setuid 选项指定的用户授予其写入权限。要做到这一点,以 root 用户身份输入以下命令:
    ~]# mkdir /var/run/stunnel
    ~]# chown nobody:nobody /var/run/stunnel
    这允许 stunnel 创建 PID 文件。
  4. 如果您的系统使用不允许访问新端口的防火墙设置,请相应地更改它们。详情请查看 第 5.6.7 节 “使用 GUI 打开端口”
  5. 创建配置文件和 chroot 目录后,当您确定可以访问指定的端口时,您已准备好使用 stunnel