bg-tutorials

如何在 macOS 服务器上生成 CSR

本教程将向您展示如何在 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.comC 字段请使用官方的两字母国家代码(例如 USGBDE)。

如果您更倾向于使用 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

检查 SubjectX509v3 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 证书可能需要一到五个工作日。

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

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

龙飞行的详细图像
撰写人

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