本指南将向您展示如何在 CWP 中生成 CSR(证书签名请求),CWP 是原本称为 CentOS Web Panel 的主机控制面板,在 CentOS 于 2024 年 6 月停止维护后,现已更名为 Control Web Panel。
该项目保留了 CWP 这一缩写,现在运行在兼容 RHEL 的发行版上,例如 AlmaLinux、Rocky Linux、RHEL 和 CloudLinux。以下的 CSR 生成步骤在所有这些系统上都是一样的。
CWP 会同时生成 CSR 及其对应的私钥,将私钥保存在服务器上,并给您一段文本内容,供您粘贴到证书颁发机构的订单表单中。同一个表单适用于单域名、多域名(SAN)以及通配符证书。
在 CWP 中生成 CSR
如果您已经使用其他工具生成了 CSR,可以直接跳到如何在 CWP 上安装 SSL 证书。否则,请按照以下步骤操作。这些标签名称与当前的 CWPpro 管理面板一致;若旧版菜单名称不同,会另作说明。
步骤 1:打开 SSL Cert Manager
- 以 root 身份登录 CWP 管理区域。管理面板默认监听端口 2030(HTTP)或 2031(HTTPS)。
- 在左侧菜单中,点击 WebServer Settings(在旧版 CWP 中标记为 Apache Settings)。
- 在展开的菜单中,选择 SSL Cert Manager(在某些版本中也显示为 SSL Certificates)。
- 切换到 Generate CSR 选项卡。
步骤 2:填写 CSR 表单
请完整填写每一个字段。CWP 会将这些值直接传递给 OpenSSL,因此拼写和格式都很重要。对于域名验证型(DV)证书,CA 不会验证组织信息字段,但如果填写了,这些信息仍会出现在签发的证书中,因此请准确填写。
- Common Name(域名):您要保护的完全限定域名(FQDN),例如 www.example.com。对于通配符证书,请在顶级域名前加上星号(例如 *.example.com),以覆盖所有一级子域名。
- Country Name(国家代码):组织注册所在国家的两字母 ISO 3166-1 代码(例如 US、GB、DE)。
- State or Province Name(省/州名称):省、州或地区的全称,不要缩写。
- City Name(城市名称):组织注册所在城市的全称,不要缩写。
- Organization Name(组织名称):拥有该域名的公司法定名称。对于个人申请的 DV 证书,请填写您的全名或填写 NA。切勿在此处填写域名。
- Organization Unit Name(组织单位名称):CA/浏览器论坛已弃用此字段,因此大多数公共 CA 会在签发的证书中将其移除。可以留空或填写 NA。
- Email Address(电子邮件地址):留空即可。现代公共 CA 已不再使用此字段进行验证,签发的证书主题中也不会显示该信息。
- Valid Days(有效天数):此处的默认值仅影响 CWP 在生成 CSR 时可能一并创建的自签名测试证书。它对公共 CA 签发的正式证书没有任何影响,因此保留默认值即可。
- Key Size(密钥长度):选择 2048 位。RSA-2048 是 2026 年最安全的默认选项,所有 CA 和客户端都支持它,并且它也是 CA/浏览器论坛的基准要求。更大的密钥长度(RSA-4096)虽然也允许使用,但会使握手成本翻倍,而对公共 TLS 而言并没有带来实质性的安全提升。
步骤 3:生成并复制 CSR
点击 Generate。CWP 会在服务器上创建两个文件:
- CSR 文件,以 .csr 格式保存在 /etc/pki/tls/certs/ 中。
- 与之配对的私钥,保存在 /etc/pki/tls/private/ 中。它也会显示在 SSL Cert Manager 的 Private Key 选项卡中。请勿删除该文件:在安装签发的证书时您将需要用到它。
使用任意文本编辑器打开 CSR 文件,其内容大致如下:
-----BEGIN CERTIFICATE REQUEST-----
MIIC2zCCAcMCAQAwgZUxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlh
...base64 content of your CSR...
EE9aJDxhWjEFqYdxPpJv3yhT/4M3xZJP0YuVqYU3MA==
-----END CERTIFICATE REQUEST-----
选中整个内容块,包括 -----BEGIN CERTIFICATE REQUEST----- 和 -----END CERTIFICATE REQUEST----- 这两行(标签两侧各有五个连字符),然后复制。在向证书颁发机构订购或重新签发证书时,将该内容块粘贴到 CSR 字段中。提交之前,请使用我们的 CSR 解码器对 CSR 进行核对,确认通用名称、SAN 列表、密钥长度以及签名算法是否符合预期。
如果您希望完全跳过 CWP 的表单,也可以使用我们的 CSR 生成器在服务器之外创建 CSR。但请注意,这样一来对应的私钥也会在服务器之外生成,因此在安装时您需要同时上传签发的证书和私钥,而不能让 CWP 自动将证书与服务器上的私钥配对。
替代方法:使用 OpenSSL 在服务器上生成 CSR
CWP 本质上是运行在标准 RHEL 系列 Linux 服务器上的 Apache 或 Nginx 之上的一个网络控制层,因此您也可以直接在 shell 中使用 OpenSSL 生成 CSR。如果您需要通过脚本自动完成证书续期,或更喜欢使用命令行,这种方式会很有用。以 root 身份通过 SSH 连接服务器,然后运行:
openssl req -new -newkey rsa:2048 -nodes
-keyout /etc/pki/tls/private/example.com.key
-out /etc/pki/tls/certs/example.com.csr
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"
随后 OpenSSL 会提示您输入与 CWP 表单中相同的字段(Common Name、Country、State、Locality、Organization、Organizational Unit、Email)。请按照步骤 2 中所述的方式填写相同的内容。在您回答提示的过程中,-addext 参数依然有效,正是它将主题备用名称(Subject Alternative Names)写入请求当中:如果没有它,CSR 将不含 SAN 列表,也就无法覆盖多个主机名。该命令会将 CSR 写入 /etc/pki/tls/certs/example.com.csr,并将私钥写入 /etc/pki/tls/private/example.com.key,这两个路径与 CWP 使用的位置一致,因此后续在安装证书时,SSL Cert Manager 会自动识别这些文件。
请锁定该私钥文件,使其仅可被 root 读取:
chmod 600 /etc/pki/tls/private/example.com.key
何时不需要 CSR:AutoSSL(Let’s Encrypt)
如果您只需要一张基本的域名验证型证书,CWP 可以通过内置的 Let’s Encrypt 集成免费签发并续期证书,面板会在后台自动为您处理 CSR。在管理区域中,打开 WebServer Settings > SSL Cert Manager,切换到 AutoSSL(或 Let’s Encrypt)选项卡,选择要保护的用户和域名,然后点击 Install SSL。拥有自己 CWP 账户的终端用户,也可以在用户面板的 Domains > AutoSSL 中执行相同的操作。
Let’s Encrypt 证书的有效期为 90 天,CWP 会在到期前大约 30 天自动为其续期。签发的文件存放在 /etc/letsencrypt/live/<domain>/ 目录下。只有在您购买了付费证书(组织验证型、扩展验证型、带额外保修的通配符证书、多域名证书)或您的 CA 要求提供 CSR 以进行重新签发时,才需要自行生成 CSR。


