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 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

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.