bg-tutorials

如何在Ubuntu中生成CSR

本教程将向您展示如何在 Ubuntu 上生成 CSR,具体来说是在通过 SSH 连接的基于 Ubuntu 的 Apache 服务器上生成。Ubuntu 使用 OpenSSL 来完成此操作,因此您只需在一条命令中完成两件事:生成一个新的私钥和与之匹配的 CSR(证书签名请求)。您可以将主题详细信息作为标志传递,这样整个过程就可以压缩为一行可直接复制粘贴的命令。

以下步骤适用于每个受支持的 Ubuntu 版本(22.04、24.04 和 26.04 LTS),因为每个版本都自带 OpenSSL 3.x。它们同样适用于像 20.04 这样的较旧版本,该版本自带 OpenSSL 1.1.1,尽管 20.04 已经结束了标准支持期。现代 OpenSSL 默认使用 SHA-256 对请求进行签名,因此您无需添加摘要标志。

第 1 步:访问您的 Ubuntu 服务器

从您的本地计算机通过 SSH 连接到服务器(macOS 或 Linux 上使用终端,Windows 上使用 PowerShell 或 Windows 终端)。请将用户名和主机替换为您自己的信息:

ssh your-user@your-ubuntu-server

请在将托管证书的同一台服务器上生成 CSR。私钥会在 CSR 旁边被创建,且必须留在该服务器上,因此如果您在本地运行这些命令然后再把密钥复制过去,就失去了这样做的意义。

第 2 步:生成私钥和 CSR

运行以下命令。它会一步创建一个 2048 位的 RSA 密钥和一个 CSR,主题和主题备用名称(SAN)以内联方式提供,因此 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 密钥。2048 位是公共证书目前的最低要求;您可以使用 rsa:4096 生成更大的密钥,或改用 ECDSA(见下文)。
  • -nodes 使私钥保持未加密状态,这样 Apache 启动时就能直接读取它,而不会弹出密码短语提示。
  • -keyout-out 分别为私钥和 CSR 文件命名。
  • -subj 提供证书主题信息。请在此处填写您真实的公司名称、州/省和城市,而不是占位符。CN(通用名称)是您的主域名。
  • -addext “subjectAltName=…” 列出证书必须覆盖的每一个主机名。公共 CA 会根据 SAN 列表进行验证,因此也要将通用名称包含在内。

请在整个命令中将 yourdomain.com 替换为您的实际域名。若要覆盖额外的主机名,请将它们用逗号分隔添加到 SAN 列表中,例如 DNS:api.yourdomain.com。对于通配符证书,请同时包含通配符和裸域名:DNS:*.yourdomain.com,DNS:yourdomain.com

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

第 3 步:定位您的文件

列出当前目录以确认两个文件都已创建:

ls

您应该会看到两个新文件:

  • yourdomain.key:您的私钥。请将其保留在服务器上,安全地备份它,切勿发送给任何人,包括证书颁发机构。任何持有该密钥的人都可以冒充您的网站。
  • yourdomain.csr:您的证书签名请求。这是您提交给 SSL 提供商的文件。

第 4 步:验证 CSR(可选,但建议进行)

在提交之前,请检查 CSR 是否包含正确的主题信息和 SAN,并确认其签名有效。以下命令会在本地使用 OpenSSL 解码该请求:

openssl req -noout -text -verify -in yourdomain.csr

请确认 Subject 行显示了您的详细信息,X509v3 Subject Alternative Name 列出了您预期的每一个主机名,并且签名检查结果显示为 verify OK。签名算法应显示为 sha256WithRSAEncryption(对于 ECDSA 密钥则为 ecdsa-with-SHA256)。如果您不想使用命令行,可以将 CSR 粘贴到我们的在线CSR 解码器中,在浏览器中查看相同的字段信息。

第 5 步:提交您的 CSR

要复制订单所需的 CSR,请打印其内容:

cat yourdomain.csr

您将看到类似这样的一段文本:

-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----

请复制整个区块,包括 —–BEGIN CERTIFICATE REQUEST—–—–END CERTIFICATE REQUEST—– 这两行(每个标记两侧各有五个连字符)。整个区块就是您的 CSR。在购买过程中将其粘贴到订单表单中,并确保匹配的私钥保留在服务器上。

如果您不想使用命令行,也可以使用我们的在线CSR 生成器来构建请求。请注意,它会在您的浏览器中生成私钥,因此您需要自行保存该密钥并将其移动到服务器上。

在您的 CA 验证 CSR 并颁发证书后,请继续参考Ubuntu SSL 安装说明

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

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

龙飞行的详细图像
撰写人

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