bg-tutorials

如何在Zimbra上生成CSR

本指南介绍如何在 Zimbra Collaboration Suite (ZCS) 上生成 CSR(证书签名请求)。你有两种方式可选:Zimbra 管理控制台(网页界面)或使用命令行工具 zmcertmgr。这两种方法都会在服务器上创建同一对文件:一个提交给证书颁发机构的 CSR,以及一个保留在 Zimbra 上的匹配私钥。在现代 ZCS 10.x 上,CLI 是更快的途径,并且能让你精确控制 SAN 列表、密钥长度和摘要算法。

Zimbra 将商业 CSR 和密钥保存在固定位置 /opt/zimbra/ssl/zimbra/commercial/ 下。同一时间只能存在一对商业 CSR 和密钥,因此再次运行 createcsr 会覆盖之前的文件。生成 CSR 后,请将两个文件都保存一份副本到安全的地方,然后将 CSR 提交给你的 CA。

前提条件

  • 一台正在运行的 Zimbra Collaboration Suite 服务器。ZCS 10.1.x(Daffodil)是目前广泛部署的版本;下面的步骤同样适用于 ZCS 9.0.x 和 8.8.x。
  • 能够通过 SSH 访问 Zimbra 服务器,并在该主机上拥有 root 或 sudo 权限(用于 CLI 方法)。
  • Zimbra 管理控制台的管理员凭据,地址为 https://server.yourdomain.com:7071(用于网页界面方法)。
  • 邮件客户端连接所使用的完全限定主机名,例如 mail.example.com。这个值会用作通用名称(CN)和第一个使用者备用名称(SAN)。

通过管理控制台在 Zimbra 上生成 CSR

如果你更喜欢图形化操作流程,管理控制台内置的证书安装向导会逐步引导你填写每个字段。在这里生成 CSR 也会在服务器的 /opt/zimbra/ssl/zimbra/commercial/commercial.key 处创建匹配的私钥,这正是后续安装步骤所期望找到它的位置。

第 1 步:登录 Zimbra 管理控制台

打开浏览器,访问 https://server.yourdomain.com:7071,将 server.yourdomain.com 替换为你在 Zimbra 安装过程中设置的服务器名称。使用你在安装过程中创建的管理员账户登录(通常是 [email protected])。

第 2 步:启动证书向导

  • 在左侧导航栏中,点击配置,然后点击证书。
  • 点击右上角的齿轮图标(位于帮助旁边),选择安装证书。
  • 在服务器名称下拉列表中,选择要加固的服务器,然后点击下一步。
  • 选择为商业证书颁发机构生成 CSR,然后点击下一步。

第 3 步:填写 CSR 详细信息

该向导要求填写的字段与任何 CA 验证并颁发证书所需的字段相同。请使用准确、最新的信息;CSR 与你的企业记录不一致是验证失败的常见原因。

  • 摘要算法:选择 SHA-256。SHA-1 已不再被任何公共 CA 信任。
  • 密钥长度:选择 2048 位(公共最低要求)。如果你的安全策略要求更大的密钥,也可以选择 4096 位。
  • 通用名称:输入用户连接所使用的完全限定主机名,例如 mail.example.com。若要申请通配符证书,请勾选使用通配符通用名称并输入 *.example.com。
  • 国家名称:输入你的组织合法注册所在国家的两字母 ISO 3166-1 alpha-2 代码,例如 US。
  • 省/州:填写完整的省或州名称,不要使用缩写(例如填写California,而不是 CA)。
  • 城市:你的组织注册所在的城市。
  • 组织名称:公开记录中显示的公司法定名称,例如 Example LLC。对于域名验证(DV)证书,你可以填写你的全名,也可以留空。
  • 组织单位:留空。公共 CA 已不再包含 OU 字段(已被 CA/浏览器论坛弃用)。如果表单不接受空值,可先填写 NA 以便继续;CA 会去除或忽略该字段。
  • 使用者备用名称:如果申请多域名(SAN)证书,请在此处列出所有其他主机名,用英文逗号分隔。对于单一名称或通配符证书,请将此字段留空。

再次检查所有值后,点击下一步。Zimbra 会在服务器上生成 CSR 和密钥。

第 4 步:下载 CSR

点击下载 CSR并保存文件。用任意纯文本编辑器(Notepad、TextEdit 或 vim)打开它,将整个内容块(包括 —–BEGIN CERTIFICATE REQUEST—– 和 —–END CERTIFICATE REQUEST—– 标记)复制粘贴到你的 CA 提供的 SSL 订单表单中。在提交之前,你可以将 CSR 粘贴到我们的CSR 解码器中,确认每个字段都正确无误。

使用命令行在 Zimbra 上生成 CSR

CLI 是在 Zimbra 上生成 CSR 最直接的方式,也是唯一能够通过单条命令完全控制 SAN 列表、密钥长度和摘要算法的方法。你需要以 zimbra 用户身份运行 zmcertmgr;在 ZCS 8.7 及更高版本上,不应以 root 身份运行它。

第 1 步:连接服务器并切换到 zimbra 用户

通过 SSH 连接到 Zimbra 服务器,然后从 root 切换到 zimbra 用户。使用带有空格的连字符;该连字符会加载 Zimbra 的环境变量并设置一个干净的登录 shell:

su - zimbra

之后要返回 root 身份,输入 exit,或从普通账户运行 sudo su。

第 2 步:运行 zmcertmgr createcsr

zmcertmgr 工具位于 /opt/zimbra/bin/zmcertmgr。createcsr comm 子命令会创建一个商业 CSR 及其匹配的密钥。请以 zimbra 用户身份运行下面的命令,全部写在一行(反斜杠只是为了方便阅读而将其拆分为多行):

/opt/zimbra/bin/zmcertmgr createcsr comm -new 
  -keysize 2048 
  -digest sha256 
  -subject "/C=US/ST=California/L=San Jose/O=Example LLC/CN=mail.example.com" 
  -subjectAltNames "mail.example.com"

请将示例中的值替换为你自己的信息。以下是每个参数的作用:

  • comm:创建商业 CSR(相对于 self,后者会生成自签名证书)。
  • -new:生成全新的密钥和 CSR。若不加此参数,zmcertmgr 会尝试重用已有的密钥。
  • -keysize 2048:RSA 密钥长度(以位为单位)。2048 是公共最低要求;如果你的策略有要求,可以使用 4096。
  • -digest sha256:签名摘要算法。SHA-256 是当前标准。
  • -subject “/C=…/CN=…”:可分辨名称。将 CN 设置为主要主机名。省略 OU:公共 CA 已弃用该字段。
  • -subjectAltNames “host1,host2,…”:以逗号分隔的主机名列表,包含证书需要覆盖的所有主机名。也应把 CN 包含在此处:现代 CA 和浏览器是根据 SAN 列表进行验证的,而不是旧版的 CN 字段。

对于覆盖多个主机名的多域名证书,请在 -subjectAltNames 中列出所有主机名:

/opt/zimbra/bin/zmcertmgr createcsr comm -new 
  -keysize 2048 
  -digest sha256 
  -subject "/C=US/ST=California/L=San Jose/O=Example LLC/CN=mail.example.com" 
  -subjectAltNames "mail.example.com,webmail.example.com,smtp.example.com"

对于通配符证书,在 CN 和 SAN 中都使用 *.example.com 的格式。通配符仅覆盖一级子域名(因此 *.example.com 覆盖 mail.example.com 和 webmail.example.com,但不覆盖 example.com 本身或 a.b.example.com):

/opt/zimbra/bin/zmcertmgr createcsr comm -new 
  -keysize 2048 
  -digest sha256 
  -subject "/C=US/ST=California/L=San Jose/O=Example LLC/CN=*.example.com" 
  -subjectAltNames "*.example.com"

如果你完全不需要任何 SAN(这种情况在现代 CA 中很少见),可以追加 -noDefaultSubjectAltName 来完全抑制 SAN 块:

/opt/zimbra/bin/zmcertmgr createcsr comm -new 
  -keysize 2048 
  -digest sha256 
  -subject "/C=US/ST=California/L=San Jose/O=Example LLC/CN=mail.example.com" 
  -noDefaultSubjectAltName

第 3 步:定位并复制 CSR

Zimbra 会将新生成的 CSR 和密钥写入固定路径:

  • CSR:/opt/zimbra/ssl/zimbra/commercial/commercial.csr
  • 私钥:/opt/zimbra/ssl/zimbra/commercial/commercial.key

在终端中打印 CSR:

cat /opt/zimbra/ssl/zimbra/commercial/commercial.csr

复制整个内容块,包括 —–BEGIN CERTIFICATE REQUEST—– 和 —–END CERTIFICATE REQUEST—– 标记,然后粘贴到你的 CA 提供的 SSL 订单表单中。请将匹配的 commercial.key 保留在服务器上;安装过程中会用到它。

第 4 步:提交前验证 CSR

在提交 CSR 之前,先解码确认 CN、SAN 列表、密钥长度以及组织字段都正确无误。现在发现的一个错字,就能在 CA 验证之后少一次重新颁发的请求。

在服务器上,使用 OpenSSL:

openssl req -in /opt/zimbra/ssl/zimbra/commercial/commercial.csr -noout -text

或者将 CSR 内容块粘贴到我们的CSR 解码器中,获取每个字段的易读解析结果。

后续步骤:安装颁发的证书

一旦 CA 验证了你的 CSR 并颁发证书,请按照我们的如何在 Zimbra 上安装 SSL 证书指南进行部署。安装步骤会使用 Zimbra 在 /opt/zimbra/ssl/zimbra/commercial/commercial.key 处创建的 commercial.key,因此请保留该文件不要移动或删除。

常见问题

应该在管理控制台还是命令行中生成 CSR?

两种方式都可以。使用 zmcertmgr createcsr comm 的 CLI 方式更为直接,能让你通过一条命令完全控制 SAN 列表、密钥长度和摘要算法。如果你更喜欢有引导的表单,管理控制台向导则更适合你。两种方法写入的文件路径完全相同,因此后续的安装流程也是一样的。

Zimbra 会把 CSR 和私钥保存在哪里?

Zimbra 会将商业 CSR 写入 /opt/zimbra/ssl/zimbra/commercial/commercial.csr,并将匹配的私钥写入 /opt/zimbra/ssl/zimbra/commercial/commercial.key。这些路径是固定的;安装步骤会期望在这个确切位置找到密钥。

我可以同时生成多个 CSR 吗?

不可以。Zimbra 同一时间只保存一个商业 CSR 和一个匹配的密钥。再次运行 zmcertmgr createcsr comm -new 会同时覆盖 commercial.csr 和 commercial.key。如果你仍需要之前的文件,请在重新生成之前先备份这对文件。

我应该以 root 身份还是 zimbra 用户身份运行 zmcertmgr?

应以 zimbra 用户身份运行。使用 su - zimbra(注意连字符两侧的空格,这会加载 Zimbra 环境并设置一个登录 shell)从 root 切换过去。在 ZCS 8.7 及更高版本上以 root 身份运行 CSR 或证书相关命令,可能会导致文件所有权错误,并在服务尝试读取这些文件时出现权限错误。

如何列出我的 Zimbra 证书必须覆盖的所有主机名?

在 -subjectAltNames 参数中以逗号分隔的字符串列出所有主机名,并将通用名称也包含在 SAN 列表中。例如:-subjectAltNames "mail.example.com,webmail.example.com,smtp.example.com"。现代浏览器和 CA 是根据 SAN 列表进行验证的,而不是旧版的通用名称字段,因此未包含在 SAN 中的主机名将不会被信任。

立即订购 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.