本指南将向您展示如何在 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 指南:

