bg-tutorials

如何在Webmin上生成CSR

本教程将向您展示如何在 Webmin 上生成 CSR(证书签名请求)。Webmin 是一款基于浏览器的 Linux 服务器控制面板,因此您有两种实用的方法来创建 CSR:通过 Webmin 内置的 SSL 模块(用于 Webmin 面板本身或 Apache 虚拟主机的图形化表单),或通过 Webmin 内置终端使用 OpenSSL 命令行。OpenSSL 方式最为灵活,可生成密钥和 CSR,适用于任何 Web 服务器(Apache、Nginx、Lighttpd 或 Webmin 管理的其他任何服务器)。

以下步骤假定使用现代版本的 Webmin 2.x 和 OpenSSL 3.x,这是 2026 年每个受支持的 Linux 发行版(Ubuntu 22.04 / 24.04 / 26.04、Debian 12 和 13、RHEL 9 和 10、Rocky 9 和 10、AlmaLinux 9 和 10、openSUSE Leap 15.6 和 Tumbleweed)当前使用的版本。输出结果是采用 SHA-256 签名的标准 PEM 编码 CSR,任何公共证书颁发机构都会接受。

第 1 步:登录 Webmin

在浏览器中打开 Webmin,访问服务器 10000 端口对应的网址:

https://yourwebsite.com:10000

将 yourwebsite.com 替换为您服务器的主机名或 IP 地址。端口 10000 是 Webmin 的默认端口。使用 root 账户或拥有 SSL 管理权限的 Webmin 用户登录。

第 2 步:打开 Webmin 终端

Webmin 2.x 自带内置终端,无需另外开启 SSH 会话即可使用。在左侧面板中,紧邻刷新模块链接下方,点击终端图标(从左数第二个图标),或按 Alt + K 打开它。系统会显示一个 shell 提示符,以您登录时使用的用户身份运行。

如果您更倾向于从自己的电脑直接建立 SSH 连接,可以连接到同一台服务器,并在其中执行下一步中的命令。结果完全相同。

第 3 步:使用 OpenSSL 生成私钥和 CSR

在终端中运行以下命令。它一步完成创建 2048 位 RSA 密钥和匹配的 CSR,主题信息和主题备用名称(SAN)以内联方式提供,因此 OpenSSL 不会中途停下询问交互式问题:

sudo openssl req -new -newkey rsa:2048 -noenc 
-keyout /etc/ssl/private/yourwebsite.com.key 
-out /etc/ssl/private/yourwebsite.com.csr 
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=yourwebsite.com" 
-addext "subjectAltName=DNS:yourwebsite.com,DNS:www.yourwebsite.com"

在 Debian 和 Ubuntu 上,/etc/ssl/private/ 目录已经存在。在 RHEL、Rocky、AlmaLinux 和 Fedora 上,惯例是使用 /etc/pki/tls/private/ 存放密钥,/etc/pki/tls/certs/ 存放 CSR。请选择您的 Web 服务器可以读取的路径,或先将文件保存在您的主目录中,之后再移动。如果目标目录不存在,请先用 sudo mkdir -p /etc/ssl/private 创建它。

该命令各部分的作用如下:

  • -newkey rsa:2048 生成一个新的 2048 位 RSA 密钥。2048 位是公共证书当前的最低要求。若需更大的密钥,可使用 rsa:4096,或改用 ECDSA(见下文)。
  • -noenc 使私钥保持未加密状态,这样 Web 服务器在启动时可以直接读取它,而无需输入密码短语。(在 OpenSSL 1.x 中,对应的选项是 -nodes;在 OpenSSL 3.x 中两者都可以使用。)
  • -keyout 和 -out 分别指定私钥文件和 CSR 文件的名称。
  • -subj 以内联方式提供证书主题信息。请将示例值替换为您的真实信息:
    • C:您的组织合法注册所在国家的两字母代码(例如 US)。
    • ST:完整的省份或州名称(例如 California),不要使用缩写。
    • L:完整的城市名称(例如 San Jose)。
    • O:合法组织名称。对于域名验证(DV)证书,可以省略或设置为您的域名。
    • CN:您要保护的站点的完全限定域名(FQDN)(例如 yourwebsite.com)。
  • -addext “subjectAltName=…” 列出证书需要覆盖的每个主机名。公共 CA 会根据 SAN 列表进行验证,因此这里也应包含通用名称(Common Name)。对于通配符证书,应同时包含通配符和顶级域名:DNS:*.yourwebsite.com,DNS:yourwebsite.com。通配符仅覆盖一级子域名,本身不会自动匹配顶级域名。

如果您更倾向于使用 ECDSA 密钥(体积更小、速度更快,且 P-256 得到广泛支持),可改用以下命令:

sudo openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -noenc 
-keyout /etc/ssl/private/yourwebsite.com.key 
-out /etc/ssl/private/yourwebsite.com.csr 
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=yourwebsite.com" 
-addext "subjectAltName=DNS:yourwebsite.com,DNS:www.yourwebsite.com"

每行末尾的反斜杠是 shell 的续行符,因此该命令实际上是一条完整的逻辑指令,为便于阅读被拆分成多行显示。如果您的终端对多行形式处理不佳,可以将整个命令粘贴为单独一行。

第 4 步:保护私钥

列出目录内容,确认两个文件都已创建:

sudo ls -l /etc/ssl/private/yourwebsite.com.*

您应该会看到两个新文件:

  • yourwebsite.com.key:私钥。它必须保留在服务器上,绝不能发送给证书颁发机构,也绝不能通过电子邮件发送或粘贴到任何表单中。任何持有该密钥的人都可以冒充您的网站。
  • yourwebsite.com.csr:证书签名请求。这是您唯一需要提交给 SSL 供应商的文件。

限制私钥的访问权限,使其只能被 root 读取:

sudo chmod 600 /etc/ssl/private/yourwebsite.com.key

在启用了 SELinux 的发行版上(RHEL、Rocky、AlmaLinux、Fedora),在将密钥移动到最终位置之后,请重新应用正确的 SELinux 上下文,例如运行 sudo restorecon -Rv /etc/pki/tls/。

第 5 步:验证 CSR(可选,但推荐)

在提交 CSR 之前,确认其中包含正确的主题信息和 SAN,且签名有效:

openssl req -noout -text -verify -in /etc/ssl/private/yourwebsite.com.csr

检查 Subject 行是否与您的信息一致,X509v3 Subject Alternative Name 是否列出了您期望的每个主机名,以及签名检查是否显示 verify OK。签名算法应显示为 sha256WithRSAEncryption(对于 ECDSA 密钥则显示为 ecdsa-with-SHA256)。如果您不想使用命令行,也可以将 CSR 文本粘贴到我们的在线CSR 解码器中,在浏览器中查看相同的字段信息。

第 6 步:复制并提交 CSR

打印 CSR 内容以便复制:

sudo cat /etc/ssl/private/yourwebsite.com.csr

您会看到如下一段文本:

-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----

复制整个内容块,包括 —–BEGIN CERTIFICATE REQUEST—– 和 —–END CERTIFICATE REQUEST—– 这两行(每个标记两侧各有五个连字符)。在购买 SSL 证书时将其粘贴到订单表单中,并将对应的私钥保留在服务器上。

通过 Webmin 的图形化模块生成 CSR

如果您希望避免使用命令行,Webmin 提供了两种图形化表单来为您创建 CSR。请根据证书的用途选择合适的方式。

针对 Apache 虚拟主机(您的网站)

  • 前往服务器 > Apache Webserver。
  • 打开全局配置标签页,点击配置 Apache 模块,勾选 ssl 模块,如果尚未启用,请点击启用所选模块。
  • 在现有虚拟主机标签页中,点击其地球图标打开端口 443 的虚拟主机(如果没有则新建一个)。
  • 在虚拟服务器选项页面上,选择SSL 选项,然后点击创建签名请求。
  • 填写表单(国家、州/省、城市、组织、通用名称、电子邮件、密钥大小 2048 位或更高,以及任何主题备用名称),选择 Webmin 应写入 .csr 和 .key 文件的位置,然后点击立即创建。

这两个文件将出现在您指定的路径中。使用 .csr 文件提交订单,并将 .key 文件保留在服务器上。

针对 Webmin 面板本身(端口 10000)

如果您只需要为 Webmin 登录界面而非某个网站申请证书,可以从 Webmin 配置模块生成 CSR:

  • 前往Webmin > Webmin Configuration > SSL Encryption。
  • 打开创建签名请求标签页。
  • 填写主机名(您访问 Webmin 所用的公开名称)、国家、州/省、城市、组织、电子邮件和密钥大小,然后点击创建。

Webmin 会将请求文件和对应的密钥写入 /etc/webmin/ 目录下。CA 签发证书后,请从同一个SSL Encryption页面安装该证书,以取代默认的 /etc/webmin/miniserv.pem 文件。

收到证书之后

一旦证书颁发机构验证了您的 CSR 并签发了证书,请将其安装到服务器上。具体步骤取决于该证书用于哪个服务:

如果您更倾向于在浏览器中完成全图形化的操作流程,也可以使用我们的在线CSR 生成器来构建 CSR。它会在您的浏览器中生成私钥,因此请自行保存该密钥,并在完成安装之前将其移动到服务器上。

常见问题

Webmin 将 CSR 和私钥存储在哪里?

取决于您的设置。使用 OpenSSL 命令时,文件会被写入您通过 -keyout 和 -out 指定的路径。使用 Apache 模块的创建签名请求表单时,输出路径可在表单中自行选择。使用 Webmin > Webmin Configuration > SSL Encryption 时,Webmin 会将文件写入 /etc/webmin/ 目录下。在 Debian 和 Ubuntu 上,密钥的惯例存放位置是 /etc/ssl/private/;在 RHEL、Rocky、AlmaLinux 和 Fedora 上则是 /etc/pki/tls/private/。

我必须使用 Webmin 的终端吗,还是可以通过 SSH 连接?

两种方式都可以。Webmin 内置终端(左侧面板中的图标,或按 Alt + K)比较方便,因为您已经登录了;但通过普通 SSH 会话运行相同的 OpenSSL 命令,也会生成完全相同的 CSR 和密钥。您可以选择自己更习惯的方式。

-noenc 和 -nodes 有什么区别?

它们的作用相同:都是告诉 OpenSSL 将私钥以未加密的形式保存在磁盘上,以便 Web 服务器在启动时可以直接读取,而不需要输入密码短语。-nodes 是历史上使用的名称,在 OpenSSL 3.x 中依然可用。-noenc 是 OpenSSL 3.0 中引入的新别名,是今后推荐使用的写法。您可以根据自己的习惯任选其一。

Webmin 生成的 CSR 与其他工具生成的 CSR 是一样的吗?

是的。CSR 是由 PKCS #10 定义的标准 PEM 编码请求,无论在哪里创建,任何 CA 都可以对其签名。无论是在 Webmin 终端中生成的 CSR,还是通过 Apache 模块的创建签名请求表单生成,或是使用我们的在线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.