本教程将向您展示如何在 macOS 上生成 CSR(证书签名请求)。文中介绍了适用于所有当前 macOS 版本的两种方法:钥匙串访问(Keychain Access)证书助理向导(内置图形工具,无需额外软件),以及在终端中使用 openssl 命令行。此外,本文还保留了针对仍在 Monterey 上运行的少数安装环境的传统 macOS Server(Server.app)工作流程。
重要提示:Apple 已于 2022 年 4 月 21 日停止了 macOS Server 应用程序的开发。最终版本 5.12.2 仅支持运行至 macOS Monterey,Ventura、Sonoma、Sequoia 或更新版本均不再提供该应用。早在 2018 年发布的 5.7.1 版本中,大多数托管服务(网页、邮件、日历、联系人、维基、VPN、DHCP、DNS 等)就已从 Server.app 中移除,因此即使在 Monterey 上,”获取受信任的证书”向导也是唯一仍存在的与证书相关的工作流程。如果您使用的是 Ventura 或更新版本,请使用下方的钥匙串访问或 OpenSSL 方法。
方法一:使用钥匙串访问生成 CSR(当前 macOS 版本)
如果您已经使用其他工具生成了 CSR,请直接跳转至在 macOS 上安装证书部分。
钥匙串访问随每个版本的 macOS 一起提供,并包含一个证书助理,可生成标准的 PKCS #10 CSR 文件(扩展名为 .certSigningRequest)。私钥会同时在您的登录钥匙串中创建,因此永远不会离开您的 Mac。如果您不想使用命令行,这是最简单的方法。
步骤一:打开钥匙串访问
从应用程序 > 实用工具中打开钥匙串访问,或按 Cmd + Space 并在 Spotlight 中输入钥匙串访问。
在 macOS Sequoia、Sonoma 和 Ventura 上,尽管 Apple 较新的密码应用程序负责管理网站密码,但钥匙串访问仍然存在。证书助理功能仅存在于钥匙串访问中,因此这是您需要打开的应用程序。
步骤二:打开证书助理
在菜单栏中,依次选择钥匙串访问 > 证书助理 > 从证书颁发机构请求证书。
步骤三:填写您的详细信息
证书助理窗口会要求填写几个字段。请仅使用标准 ASCII 字符;公共 CA 会拒绝主题字段中包含的非拉丁字母。
- 用户电子邮件地址:一个有效的联系电子邮件地址。公共 CA 会使用该地址发送签发通知。
- 通用名称:您想要保护的完全限定域名,例如 www.example.com。对于通配符证书,请使用星号形式,例如 *.example.com。
- CA 电子邮件地址:留空。您将通过 CA 的订购表单提交 CSR,而不是通过电子邮件。
- 请求方式:选择保存到磁盘。勾选让我指定密钥对信息,以便在下一屏幕中选择密钥类型和大小。
点击继续。macOS 会提示您选择保存位置;请选择一个之后能轻松找到的文件夹(例如桌面)。默认文件名为 CertificateSigningRequest.certSigningRequest;您可以在保存前重命名。
步骤四:选择密钥对
在密钥对信息屏幕中,选择您希望 CA 绑定到证书的密钥类型和大小:
- 密钥大小:2048 位(公共证书当前的最低要求)或 4096 位以获得更大的 RSA 密钥。较旧的 1024 位密钥会被所有公共 CA 拒绝,因此请不要选择它们。
- 算法:RSA 以获得最大兼容性,或 ECC 以使用现代椭圆曲线密钥(体积更小、速度更快,且客户端支持广泛)。
点击继续。证书助理会生成密钥对,将私钥存储在您的登录钥匙串中,将 CSR 写入您选择的文件,并显示确认屏幕。点击完成。
CSR 现已准备好提交给您的 CA。您可以在文本编辑中打开 .certSigningRequest 文件以查看其内容;该文件以 -----BEGIN CERTIFICATE REQUEST----- 开头,以 -----END CERTIFICATE REQUEST----- 结尾。请复制整个代码块(包括这些头部和尾部行),并在购买过程中将其粘贴到订单表单中。
在提交之前,您可以使用我们的CSR 解码器解码该请求,以确认各字段是否正确。
方法二:在终端中使用 OpenSSL 生成 CSR
如果您更喜欢使用命令行,或者需要在一个请求中包含多个主机名的主题备用名称(SAN)列表,可以在终端中使用 openssl 工具生成 CSR。每个现代版本的 macOS 都在 /usr/bin/openssl 中内置了 LibreSSL 命令,该命令支持与 Linux 上相同的 openssl req 语法。如果您更倾向于使用 OpenSSL 本身,可以通过 brew install openssl@3 进行安装;安装后的二进制文件位于 /opt/homebrew/opt/openssl@3/bin/openssl(Apple 芯片)或 /usr/local/opt/openssl@3/bin/openssl(Intel 芯片)。
步骤一:打开终端
从应用程序 > 实用工具中打开终端,或按 Cmd + Space 并输入终端。切换到一个之后能轻松找到的文件夹,例如桌面上的工作目录:
mkdir -p ~/Desktop/csr
cd ~/Desktop/csr
步骤二:生成私钥和 CSR
运行以下命令。该命令会一步生成一个新的 2048 位 RSA 密钥(yourdomain.key)以及相匹配的 CSR(yourdomain.csr),并以内联方式提供主题和主题备用名称,因此 OpenSSL 不会中途停下来提问:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
各部分的作用如下:
- -newkey rsa:2048 生成一个新的 2048 位 RSA 密钥。若需要更大的密钥,可使用 rsa:4096,或切换为 ECDSA(见下文)。
- -nodes 使私钥保持未加密状态,以便您的 Web 服务器在启动时可以读取它,而无需输入密码短语提示。
- -keyout 和 -out 分别命名私钥和 CSR 文件。
- -subj 提供证书主题。请在此处填写您真实的公司名称、州/省和城市,而不是占位符。CN(通用名称)是您的主域名。
- -addext “subjectAltName=…” 列出该证书必须覆盖的每个主机名。公共 CA 会根据 SAN 列表进行验证,因此始终要将通用名称也包含在其中。
请将所有出现的 yourdomain.com 替换为您的实际域名。如需覆盖额外的主机名,可在 SAN 列表中用逗号分隔添加,例如 DNS:api.yourdomain.com。对于通配符证书,请同时包含通配符和裸域名:DNS:*.yourdomain.com,DNS:yourdomain.com。C 字段请使用官方的两字母国家代码(例如 US、GB、DE)。
如果您更倾向于使用 ECDSA 密钥(体积更小、速度更快,且 P-256 广泛受到支持),可以改用如下方式生成密钥和 CSR:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
如果您更希望逐一回答各字段的提示,可以运行不含 -subj 和 -addext 的简化形式:
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
随后 OpenSSL 会依次询问以下各字段:
- 国家名称(2 字母代码):您所在国家的 ISO 3166-1 alpha-2 代码,例如 US。
- 州或省名称:您所在州或省的全称,而不是缩写。
- 城市名称:您的组织注册所在的城市。
- 组织名称:对于 OV 和 EV 证书,填写您公司的完整法定名称。对于 DV 证书,该值不会被验证,但也不要直接按回车:OpenSSL 会填入其配置中定义的默认值,而标准的 openssl.cnf 文件中默认值为 Internet Widgits Pty Ltd,这会出现在您的 CSR 中。请输入一个单独的句点(
.)以使该字段真正保持为空。 - 组织单位名称:已被 CA/浏览器论坛弃用。按回车键留空即可。
- 通用名称:您想要保护的完全限定域名,例如 www.yourdomain.com,或对于通配符证书使用 *.yourdomain.com。
- 电子邮件地址:一个有效的联系电子邮件,或按回车跳过。
- 当被要求输入质询密码和可选的公司名称时,按回车键使两者均保持为空。公共 CA 会忽略这些字段。
请注意,以上提示中没有一个会询问 SAN。您仍可以通过在命令行中保留 -addext 而仅省略 -subj 来获得 SAN:OpenSSL 会以交互方式询问主题,同时仍会写入 SAN 扩展。否则,请使用上文完全内联的形式,或使用 OpenSSL 配置文件构建 CSR。
步骤三:验证并提交 CSR
在将 CSR 发送给 CA 之前,请在本地解码它,以确认主题和 SAN 列表与您预期的一致:
openssl req -noout -text -verify -in yourdomain.csr
检查 Subject 和 X509v3 Subject Alternative Name 行是否正确,并确认签名检查返回 verify OK。您也可以使用我们的CSR 解码器在线解码该 CSR。
在文本编辑中打开 .csr 文件(或使用 cat yourdomain.csr 打印出来),并复制整个代码块,包括 -----BEGIN CERTIFICATE REQUEST----- 和 -----END CERTIFICATE REQUEST----- 行。在购买过程中将其粘贴到订单表单中。请将匹配的 yourdomain.key 文件安全地保存在同一台机器上;该文件绝不能发送给 CA 或与他人共享。
方法三:传统 macOS Server(Monterey 上的 Server.app)
如果您仍在 Monterey 上运行 macOS Server 5.12.2,内置的获取受信任的证书向导会生成 CSR,并将匹配的私钥存储在系统钥匙串中。Server 5.12.x 需要 macOS Monterey(更早版本如 5.11 支持 Big Sur)。在 Ventura 及更新版本上,该应用程序不可用;请改用上文中的钥匙串访问或 OpenSSL 方法。
步骤一:启动 macOS Server
打开访达 > 应用程序 > Server。
步骤二:选择目标服务器
- 此 Mac(您的服务器名称):在本机生成 CSR。输入您的管理员用户名和密码,然后点击允许。
- 其他 Mac(您的服务器名称):在远程 Mac 上生成 CSR。输入其主机名或 IP 地址以及管理员凭据,然后点击允许。
步骤三:开始生成 CSR
- 在左侧窗格的服务器下,选择证书。
- 找到现有的自签名证书。它适用于测试和私有网络,但不受公共浏览器信任。
- 点击页面底部的 + 按钮,选择获取受信任的证书,然后点击下一步。
步骤四:填写 CSR 详细信息
- 主机名(CN):要保护的完全限定域名,例如 www.yoursite.com,或对于通配符证书使用 *.yoursite.com。
- 联系电子邮件地址:一个有效的电子邮件地址。
- 组织(O):对于 OV 和 EV 证书,填写您公司的完整法定名称。对于 DV 证书,留空即可。
- 组织单位(OU):已被 CA/浏览器论坛弃用。留空即可。
- 城镇/城市(L):您的组织注册所在的城市。
- 州/省(ST):您所在州或省的全称。
- 国家(C):从列表中选择您所在的国家。
检查您填写的信息,点击下一步,然后将 CSR 文件保存到磁盘。私钥会保留在系统钥匙串中,并在证书安装过程中需要用到。
提交 CSR 以及后续流程
在订购 SSL 证书时,提交 .csr 文件的内容(或从 Server.app 中保存的文件)。CA 验证您的请求并签发证书后,请按照我们的指南如何在 macOS 上安装 SSL 证书导入证书并配置您的 Web 服务器。DV 证书通常在几分钟内签发;OV 和 EV 证书可能需要一到五个工作日。


