bg-tutorials

如何在 Debian 上生成 CSR

本指南将向您展示如何在 Debian 上使用 OpenSSL 命令行生成 CSR(证书签名请求)。您只需通过 SSH 运行一条命令,即可同时创建两个文件:一个保留在服务器上的私钥,以及一个提交给证书颁发机构(CA)的 CSR。这些步骤适用于 Debian 13(trixie)、Debian 12(bookworm)以及更早的版本,因为 OpenSSL 已内置于基础系统中。

CSR 是一个包含您的域名详情和公钥的小型文本块。CA 会读取它,验证您的请求,并颁发与其一起创建的私钥相匹配的证书。私钥永远不会离开您的服务器,因此请妥善保管:如果丢失,颁发的证书将无法使用,您必须重新开始整个流程。

第 1 步:登录您的 Debian 服务器

打开终端并通过 SSH 连接到服务器。将 your-user 替换为您的账户名,将 your-server-ip 替换为服务器的 IP 地址或主机名:

ssh your-user@your-server-ip

OpenSSL 已内置于 Debian 基础系统中,因此无需额外安装。要确认它是否可用,请检查版本:

openssl version

第 2 步:生成私钥和 CSR

运行下面的命令。它会一步创建私钥和 CSR,并包含现代浏览器和 CA 所要求的主题备用名称(SAN)。请在您具有写入权限的目录中运行此命令,例如您的主目录:

openssl req -new -newkey rsa:2048 -nodes 
-keyout mywebsite.key 
-out mywebsite.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mywebsite.com" 
-addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com"

以下是每个部分的作用:

  • req -new 创建一个新的证书签名请求。
  • -newkey rsa:2048 生成一个新的 2048 位 RSA 私钥。2048 位是公开证书当前的最低要求;您也可以使用 rsa:4096 生成更大的密钥。
  • -nodes 使私钥保持未加密状态(无密码),以便 Web 服务器启动时无需输入密码。
  • -keyout mywebsite.key 写入私钥。请对此文件保密,切勿发送给任何人。
  • -out mywebsite.csr 写入您需要提交给 CA 的 CSR。
  • -subj 直接在命令行中填写主题字段,使命令无需交互式提示即可运行。请将 CN(通用名称)设置为您的完全限定域名。
  • -addext “subjectAltName=…” 添加 SAN 条目。CA 会根据 SAN 列表颁发证书,因此请包含证书需要覆盖的每一个主机名。

将 mywebsite.com 替换为您的真实域名,并编辑 -subj 中的值以匹配您的组织信息。两位字母的国家代码(C)必须为大写,例如 US 或 GB。对于域名验证型(DV)证书,组织字段不会被验证,但命令仍需要有效的值。

如果您希望以交互方式填写字段而不使用 -subj,可以省略该行,OpenSSL 会逐一提示您输入每个值:

openssl req -new -newkey rsa:2048 -nodes 
-keyout mywebsite.key 
-out mywebsite.csr 
-addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com"

出现提示时,将challenge password(质询密码)和可选公司名称留空,直接按 Enter 键即可。CA 会忽略这些字段,而质询密码可能会在以后引发问题。

添加更多域名或通配符

在 SAN 列表中添加更多主机名,用逗号分隔。例如,要包含一个 API 子域名:

-addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com,DNS:api.mywebsite.com"

对于通配符证书,请使用 *.mywebsite.com。通配符只覆盖一层子域名,不包含裸域名本身,因此如果您也希望覆盖顶级域名,请同时列出两者:

-addext "subjectAltName=DNS:*.mywebsite.com,DNS:mywebsite.com"

更倾向于使用 ECDSA 密钥?

在相同安全级别下,ECDSA 密钥比 RSA 更小、更快,且已获得广泛支持。要生成 P-256(prime256v1)密钥和 CSR,只需替换 -newkey 参数:

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout mywebsite.key 
-out mywebsite.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mywebsite.com" 
-addext "subjectAltName=DNS:mywebsite.com,DNS:www.mywebsite.com"

现代版本的 OpenSSL 默认使用 SHA-256 对 CSR 进行签名,这正是 CA 所要求的。因此无需额外添加摘要算法标志。

第 3 步:验证 CSR

在提交请求之前,请确认其中包含正确的域名和 SAN,并检查其签名是否有效。以下命令会打印解码后的内容,并在本地验证签名:

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

在输出中查找 verify OK,检查 Subject 行是否显示您的通用名称,并确认 X509v3 Subject Alternative Name 部分列出了您期望的每一个主机名。如果缺少某个 SAN,请使用正确的 -addext 值重新生成 CSR。您也可以将 CSR 粘贴到我们的在线CSR 解码工具中,在浏览器中检查这些字段。

第 4 步:提交 CSR

打开 CSR 文件并复制其全部内容,包括 BEGIN 和 END 行:

cat mywebsite.csr

该内容块看起来像这样。请复制从第一行到最后一行的全部内容,包括 BEGIN 和 END 标记两侧的五个连字符:

-----BEGIN CERTIFICATE REQUEST-----
MIIC...base64-encoded data...AB
-----END CERTIFICATE REQUEST-----

将该内容块粘贴到您的 SSL 订购表单中。CA 验证 CSR 并颁发 SSL 证书后,请按照Debian SSL 安装说明进行部署。请将 mywebsite.key 文件保存在服务器上:您需要将它与颁发的证书一起使用才能启用 HTTPS,并且绝不能将其发送给 CA 或任何其他人。

如果您不想使用命令行,也可以使用我们的CSR 生成器来生成请求,并将结果粘贴到您的订单中。

在其他平台上生成 CSR

使用不同的 Linux 发行版或服务器?请查看我们的其他 CSR 指南:

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