本教程介绍如何为 Pound(轻量级反向代理和负载均衡器)生成 CSR(证书签名请求)。由于 Pound 没有内置的 CSR 工具,您需要使用 OpenSSL 创建 CSR 和私钥,然后将 CSR 提交给证书颁发机构。
注意: 最初的 Apsis Pound 项目在 2022 年 9 月 Apsis GmbH 解散后已停止维护。目前积极维护的后续版本是 graygnuorg/pound 分支(目前版本为 4.x)。下面介绍的 CSR 生成流程同时适用于旧版 Pound 和当前的分支版本,因为该流程依赖于 OpenSSL,而非 Pound 本身。
生成 CSR 和私钥
您有两种方式来生成 CSR:
- 使用 CSR 生成器 自动创建 CSR,无需运行任何命令。
- 如下所述,在运行 Pound 的服务器上使用 OpenSSL 手动生成 CSR。
第 1 步:运行 OpenSSL 命令
通过 SSH 连接到您的 Pound 服务器,并运行以下命令。将每个占位符替换为您的实际信息:
openssl req -new -newkey rsa:2048 -sha256 -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
这个命令会在当前目录中创建两个文件:
- yourdomain.key,您的私钥。请妥善保管该文件,切勿与他人共享。
- yourdomain.csr,即您将提交给 CA 的证书签名请求。
第 2 步:了解各字段含义
-subj 字符串中的每个字段都用于向证书颁发机构标识您的组织:
- C:两位字母的国家代码(例如 US)。
- ST:州或省份(例如 California)。
- L:城市或地区(例如 San Jose)。
- O:完整的法定组织名称(例如 Your Company LLC)。
- CN:您要保护的完全限定域名(例如 yourdomain.com)。
-addext 选项用于添加使用者备用名称(SAN)。现代浏览器会根据 SAN 列表而非 CN 字段来验证证书。请包含所有应受保护的域名变体,例如同时包含 yourdomain.com 和 www.yourdomain.com。
第 3 步:验证并提交 CSR
使用任意文本编辑器打开 CSR 文件,或将其输出到终端:
cat yourdomain.csr
输出内容以 -----BEGIN CERTIFICATE REQUEST----- 开头,以 -----END CERTIFICATE REQUEST----- 结尾。请复制整个内容块(包括这两行边界标记),并在订购证书时粘贴到 CSR 字段中。在提交之前,您还可以使用 解码 CSR 工具验证 CSR 内容。
第 4 步:保护私钥安全
私钥文件(yourdomain.key)会与 CSR 一起生成。请将其移动到安全位置,并限制其访问权限:
sudo mkdir -p /etc/ssl/private
sudo mv yourdomain.key /etc/ssl/private/
sudo chmod 600 /etc/ssl/private/yourdomain.key
在 Pound 上安装 SSL 时会用到此密钥。如果私钥丢失,您将需要生成新的 CSR 并重新颁发证书。
接下来的步骤:在 Pound 上安装证书
当 CA 验证您的请求并颁发证书后,您将收到证书文件(通常包括一个服务器证书和一个中间证书的 CA 捆绑包)。Pound 要求将所有这些文件连同私钥,按照特定顺序合并到一个 PEM 文件中:
- 您的服务器证书(例如 yourdomain.crt)。
- 中间证书(CA 捆绑包)。
- 您的私钥(例如 yourdomain.key)。
合并命令如下所示:
sudo sh -c 'cat yourdomain.crt yourdomain.ca-bundle /etc/ssl/private/yourdomain.key > /etc/ssl/pound.pem'
sudo chmod 600 /etc/ssl/pound.pem
请注意密钥文件的路径:第 4 步已将其移动到 /etc/ssl/private/ 目录下,因此它不再位于您运行 OpenSSL 命令时所在的目录中。该文件中的私钥不得设置密码保护,因为 Pound 是以守护进程方式运行的,无法提示输入密码,这正是上述命令中 -nodes 选项所解决的问题。合并后的文件包含您的私钥,因此请确保只有 root 用户可以读取该文件。然后,您需要使用 Cert 指令,将 Pound 的 ListenHTTPS 配置块指向这个合并后的文件。完整的安装步骤请参阅如何在 Pound 上安装 SSL 证书。


