bg-tutorials

如何在Pound上安装SSL证书

本指南将向您展示如何在 Pound(轻量级 HTTP/HTTPS 反向代理)上安装 SSL/TLS 证书。内容涵盖了大多数操作者容易出错的部分:按正确顺序构建 Pound 所需的单一合并 PEM 文件,然后编写一个可正常工作的 ListenHTTPS 配置块——该配置块会禁用过时的协议、将 Pound 指向后端,并在重启服务前通过配置检查。

关于本指南针对的是哪个 Pound 版本,先简要说明一下。最初的 Apsis Pound 项目已于 2022 年 9 月停止维护。活跃的开发工作转移到了由 Sergey Poznyakoff 维护的分支上,地址为 github.com/graygnuorg/pound,该分支现已成为规范的上游版本,也是当前 Linux 发行版打包使用的版本。以下指令与现代 4.x 系列相匹配。

为 Pound 生成 CSR

如果您已经生成了 CSR 并已拿到签发的证书文件,请直接跳转到在 Pound 上安装 SSL 证书部分。

在证书颁发机构签发证书之前,您需要提交一份 CSR(证书签名请求):一个包含您的域名信息和公钥的小文本块,与保留在服务器上的私钥配对。您有两种方式:

  • 使用我们的CSR 生成器自动生成 CSR。该工具会同时返回 CSR 和对应的私钥,您随后将其转移到服务器上。
  • 按照我们的教程如何在 Pound 上生成 CSR,直接在服务器上使用 OpenSSL 生成 CSR。私钥将保留在服务器上。

申请证书时,请粘贴完整的 CSR 内容块,包括 —–BEGIN CERTIFICATE REQUEST—– 和 —–END CERTIFICATE REQUEST—– 这两行。如果想在提交前确认 CSR 内容,可以将其粘贴到我们的CSR 解码器中。请将对应的私钥文件(通常命名为 yourdomain.key)妥善保存在安全位置,并仅允许 root 用户读取;安装过程中您将需要用到它。

在 Pound 上安装 SSL 证书

证书颁发机构签发证书后,您通常会收到以下文件:

  • 您的主(服务器)证书,通常是以您的域名命名的 .crt 或 .pem 文件。
  • 一个或多个中间证书,可能是单独的文件,也可能打包在一个 .ca-bundle 文件中。
  • 与您的 CSR 一起生成的私钥(一个 .key 文件)。

Pound 需要一个单一的 PEM 文件,其中包含证书、中间证书链以及未加密的私钥。graygnuorg 的官方文档明确规定了顺序:先是证书,然后是中间证书(如果有的话),最后是私钥,依此顺序排列。跳过证书链是最常见的安装错误:证书在桌面浏览器中看起来正常,但在 Android、iOS 以及命令行客户端中却会验证失败。

步骤 1:构建合并的 PEM 文件

本指南假设证书文件存放在 /etc/pound/ 目录中。请根据您的实际情况调整路径。将三个文件合并为一个 PEM 文件。下面这种通过管道传给 tee 命令的写法,是以 root 权限执行重定向操作,这是必要的,因为 /etc/pound/ 通常只有 root 用户才有写入权限(如果直接用 sudo cat … > /etc/pound/… 会失败,因为 shell 在 sudo 执行之前,就已经以您的普通用户身份打开了输出文件):

cat your_domain.crt intermediate.crt your_domain.key | sudo tee /etc/pound/your_domain.pem > /dev/null

如果 CA 提供的中间证书是一个单独的 .ca-bundle 文件,请改用以下命令:

cat your_domain.crt your_domain.ca-bundle your_domain.key | sudo tee /etc/pound/your_domain.pem > /dev/null

请将文件名替换为您自己的文件名。合并文件中的私钥必须是未加密的,因为 Pound 是以非交互方式启动的,无法提示输入密码短语。请锁定生成的文件权限,使其仅能被 root 读取:

sudo chown root:root /etc/pound/your_domain.pem
sudo chmod 600 /etc/pound/your_domain.pem

步骤 2:编辑 pound.cfg

打开 Pound 配置文件(在 Debian 和 Ubuntu 上通常是 /etc/pound/pound.cfg,在其他一些发行版上是 /etc/pound.cfg),添加一个指向合并 PEM 文件的 ListenHTTPS 配置块。一个精简的现代配置块如下所示:

ListenHTTPS
    Address 0.0.0.0
    Port 443
    Cert "/etc/pound/your_domain.pem"

    # Modern TLS only: disables SSLv2, SSLv3, TLSv1.0 and TLSv1.1,
    # leaving TLSv1.2 and TLSv1.3 enabled.
    Disable TLSv1_1
    Ciphers "ECDHE+AESGCM:ECDHE+CHACHA20:!aNULL:!MD5:!DSS"

    Service
        Backend
            Address 127.0.0.1
            Port 8080
        End
    End
End

关于上述指令,有几点需要说明:

  • Cert 指定您在步骤 1 中构建的合并 PEM 文件。官方文档明确指出,Cert 必须位于监听器内所有其他 SSL 相关指令之前,因此请将其保留在配置块的顶部。
  • Disable 会关闭指定的协议以及所有比它更旧的协议。因此,Disable TLSv1_1 会禁用 SSLv2、SSLv3、TLSv1.0 和 TLSv1.1,只保留 TLSv1.2 和 TLSv1.3,这符合当前的行业指导规范。
  • Ciphers 设置 OpenSSL 密码套件列表(用于 TLS 1.2;TLS 1.3 会自行协商密码套件)。上述列表将代理限制为使用带 AEAD 的现代 ECDHE 套件;如果您需要支持较旧的客户端,可以换用来自 ssl-config.mozilla.org 的 Mozilla “intermediate”(中级)配置方案。
  • Service / Backend 是 Pound 转发解密后流量的目标位置。示例中将流量转发到本地回环接口(端口 8080)上的单一后端;请将地址和端口替换为您应用程序实际监听的地址和端口,如果希望 Pound 进行负载均衡,可以添加更多 Backend 配置块。

如果您还希望 Pound 接受普通 HTTP 请求并转发(通常仅用于重定向到 HTTPS,参见步骤 4),请在同一文件中添加一个单独的 ListenHTTP 配置块。

步骤 3:检查配置并重启 Pound

在重新加载服务之前,请先验证配置文件,以避免因拼写错误导致代理离线。Pound 内置了检查模式:

sudo pound -c -f /etc/pound/pound.cfg

检查成功时会以状态码 0 退出,且不输出任何内容;检查失败时会以状态码 1 退出,并显示指出具体文件和行号的错误信息。如果想要明确看到”配置正常”的确认信息,可以加上 -v 参数。检查通过后,重启 Pound 使其加载新的监听器配置:

sudo systemctl restart pound

在没有 systemd 的系统上,请改用旧版的初始化脚本:

sudo /etc/init.d/pound restart

确认服务正在运行并监听 443 端口:

sudo systemctl status pound
sudo ss -tlnp | grep ':443'

步骤 4(推荐):将 HTTP 重定向到 HTTPS

为了确保直接输入裸域名的访问者能够跳转到安全的 URL,请添加一个普通的 HTTP 监听器,使其对每个请求都以永久重定向的方式响应,跳转到同一路径的 HTTPS 版本:

ListenHTTP
    Address 0.0.0.0
    Port 80
    Service
        Redirect 301 "https://example.com$1"
    End
End

将 example.com 替换为您自己的域名。$1 反向引用会保留原始的请求路径。再次运行 sudo pound -c -f /etc/pound/pound.cfg,然后重启服务。

测试 SSL 安装情况

在浏览器中通过 https:// 打开您的网站,检查锁形图标是否已闭合,以及证书是否与您的域名相匹配。然后使用我们的SSL 检测工具进行更深入的扫描,即时获取有关证书、证书链以及 Pound 提供的协议和密码套件的报告。检测结果干净无误,就意味着包括移动端和 API 客户端在内的所有主流平台上的客户端都会信任该证书。

常见问题

我应该安装哪个 Pound 版本?

最初的 Apsis 项目已于 2022 年停止维护。目前积极维护的分支是由 Sergey Poznyakoff 维护的 graygnuorg/pound,目前处于 4.x 系列,也是各大 Linux 发行版打包时使用的 pound 版本。如果您运行的是旧版 2.x 系列的任何版本,请计划迁移到当前版本:本指南中的配置指令均以现代分支为基础。

证书、证书链和私钥在 PEM 文件中的顺序应该是怎样的?

根据 Pound 官方文档:先是服务器证书,然后是中间证书(如果有的话),最后是私钥,全部采用 PEM 编码,放在同一个文件中。私钥不能设置密码保护,因为 Pound 是以守护进程方式启动的,无法提示输入密码。

如何在 Pound 中禁用旧版 TLS 协议?

在 ListenHTTPS 配置块中使用 Disable 指令。Pound 的 Disable 会关闭指定的协议以及所有比它更旧的协议,因此 Disable TLSv1_1 会禁用 SSLv2、SSLv3、TLSv1.0 和 TLSv1.1,只保留 TLSv1.2 和 TLSv1.3。这是新部署环境推荐使用的设置。

我可以在同一个 Pound 实例上托管多个 HTTPS 站点吗?

可以。Pound 支持 SNI,因此您可以在同一个 ListenHTTPS 监听器中声明多个 Cert 语句(或者让 Cert 指向一个存放 PEM 文件的目录)。Pound 会按顺序遍历这些证书,并使用第一个 Common Name 或 SAN 与请求主机名匹配的证书,因此请将更具体的证书(主机名)排在通配符证书之前。

如何在不重启的情况下测试 Pound 配置?

运行 sudo pound -c -f /etc/pound/pound.cfg。-c 参数用于检查配置文件是否存在语法错误,并在不启动代理的情况下退出;退出状态码 0 表示正常,状态码 1 表示存在错误(错误信息会告知您具体是哪个文件、哪一行)。加上 -v 参数可以获得明确的成功提示信息。

我需要多久更新一次证书?

截至 2026 年 3 月 15 日,公开信任的 SSL/TLS 证书有效期上限为 200 天,且 CA/浏览器论坛已计划进一步缩短有效期(2027 年缩短至 100 天,2029 年缩短至 47 天)。请计划在每次到期之前,及时重复上述安装步骤,或使用 ACME 实现自动续期。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.