bg-tutorials

如何在Sentora上生成CSR

本指南将向您展示如何在 Sentora 上使用 OpenSSL 生成 CSR(证书签名请求)。Sentora 控制面板没有内置的 CSR 工具,因此您需要直接在运行 Apache 和 Linux 的服务器上创建请求。一条命令即可同时生成两个文件:保留在服务器上的私钥,以及您提交给证书颁发机构(CA)的 CSR。

Sentora 本身发展缓慢,但并未被放弃;目前的稳定版本是 v2.0.2(2024 年 5 月,基于 PHP 7.4),由前 ZPanel 开发者维护,下面的 OpenSSL 操作流程不受面板版本影响。

如果您已经生成了 CSR 并从您的 CA 收到了签发的证书,请直接跳转至在 Sentora 上安装 SSL 证书部分。否则,请按照以下步骤操作。

第一步:以 root 身份登录服务器

打开运行 Sentora 的服务器的 SSH 会话,并切换为 root 用户。生成 CSR 本身并不严格要求 root 权限,但如果下一步中缺少 OpenSSL,您将需要 root 权限来安装它:

sudo -i

第二步:确认 OpenSSL 已安装

OpenSSL 随每个当前版本的 Debian、Ubuntu、CentOS、AlmaLinux 和 Rocky Linux 一起提供,因此几乎可以肯定已经安装。检查版本:

openssl version

如果该命令返回了版本号,请跳到第三步。如果尚未安装,请使用您所用发行版的软件包管理器进行添加。

在 Debian 或 Ubuntu 上:

apt update && apt install -y openssl

在 CentOS、AlmaLinux 或 Rocky Linux 上:

dnf install -y openssl

在没有 dnf 的旧系统上,使用 yum install -y openssl 同样有效。

第三步:生成私钥和 CSR

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

openssl req -new -newkey rsa:2048 -nodes 
-keyout example.key 
-out example.csr 
-subj "/C=US/ST=New York/L=New York/O=Example LLC/CN=example.com" 
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"

以下是各部分的作用:

  • req -new 创建一个新的证书签名请求。
  • -newkey rsa:2048 生成一个全新的 2048 位 RSA 私钥。2048 位是目前公共证书的最低要求;如果您想要更大的密钥,可以使用 rsa:4096
  • -nodes 使私钥保持未加密状态(无密码短语),这样 Apache 启动时不会提示输入密码。这是一种通用的写法,适用于所有 OpenSSL 版本。
  • -keyout example.key 写入私钥。请妥善保管此文件,切勿发送给任何人。
  • -out example.csr 写入您要提交给 CA 的 CSR。
  • -subj 在命令行中直接填写主题字段,这样命令运行时无需交互式提示。将 CN(通用名称)设置为您的完全限定域名。
  • -addext “subjectAltName=…” 添加 SAN 条目。CA 会依据 SAN 列表签发证书,因此请包含证书必须涵盖的每一个主机名。

请将每个占位符替换为您的真实信息:

  • example.com:您的实际域名,需同时出现在 CN 和 SAN 列表中。
  • CSTLO:您的两字母国家代码(大写,例如 USGB)、省/州、城市和法定组织名称。对于域名验证(DV)证书,这些字段不会被验证,但命令仍需要有效值。
  • example.keyexample.csr:您可以使用任意文件名,只要保持一致即可。

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

保护通配符或额外子域名

要添加更多主机名,请在 SAN 列表中用逗号分隔添加额外的 DNS: 条目,例如 DNS:api.example.com。对于通配符证书,请将 CN 设置为 *.example.com,并在 SAN 列表中保留顶级域名。通配符仅覆盖一级子域名(www.example.commail.example.com),而不覆盖裸顶级域名(example.com),因此顶级域名必须单独列出才能被覆盖:

-addext "subjectAltName=DNS:*.example.com,DNS:example.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 example.key 
-out example.csr 
-subj "/C=US/ST=New York/L=New York/O=Example LLC/CN=example.com" 
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"

ec_param_enc:named_curve 选项会以名称的方式存储曲线,这正是 PKIX 所要求的;如果不使用该选项,某些 OpenSSL 版本会嵌入完整的曲线参数,导致 CA 拒绝该请求。

第四步:验证 CSR

在提交请求之前,请确认它包含正确的域名和 SAN,并且其签名有效。以下命令会解码 CSR 并在本地检查签名:

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

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

第五步:定位并提交 CSR

列出工作目录以确认两个文件都存在:

ls -l example.key example.csr

由于您使用的是 Linux 服务器,请使用终端查看器打开 CSR,而不要使用 Windows 编辑器。使用以下命令将其打印到屏幕上:

cat example.csr

复制整个代码块,包括第一行和最后一行。CSR 由两侧各带五个连字符的 CERTIFICATE REQUEST 标记分隔,而不是已签发证书所用的 CERTIFICATE 标记:

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

将该代码块粘贴到您的 SSL 订购表单中。在 CA 验证请求并签发证书后,请按照我们的在 Sentora 上安装 SSL 证书指南进行部署。请将 example.key 文件保留在服务器上:您需要将它与签发的证书一起用于启用 HTTPS,并且绝不能将其发送给 CA 或任何其他人。

如果您不想使用命令行,也可以使用我们的CSR 生成工具创建请求,然后将结果粘贴到您的订单中。

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

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

龙飞行的详细图像
撰写人

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