bg-tutorials

如何在 Red Hat Linux 上生成 CSR

本指南将向您展示如何在 Red Hat Enterprise Linux 上使用 OpenSSL 命令行生成 CSR(证书签名请求)。此过程会生成两个文件:

  • 一个私钥,它保留在您的服务器上,绝不共享。
  • 一个CSR,当您向证书颁发机构(CA)订购证书时,需要将其发送给对方。

本文涵盖两种方法:适用于现代 OpenSSL 的单命令方法,以及适用于不支持内联扩展的旧版 OpenSSL 的配置文件方法。两种方法都会生成符合 SAN 标准、使用 SHA-256 签名的 CSR,这正是公共 CA 所要求的格式。

开始之前:检查您的 OpenSSL 版本

每个受支持的 RHEL 版本默认都包含 OpenSSL。请确认它已安装并检查版本,因为版本决定了您下面可以使用哪种方法:

openssl version

每个当前 Red Hat 版本随附的版本如下:

  • RHEL 10(2025 年发布,当前的主要版本):OpenSSL 3.x
  • RHEL 9:OpenSSL 3.x
  • RHEL 8:OpenSSL 1.1.1
  • RHEL 7:OpenSSL 1.0.2(RHEL 7 于 2024 年结束维护支持;请尽快将这些工作负载迁移到受支持的版本)

OpenSSL 1.1.1 和 3.x 都支持单命令方法中使用的内联扩展标志,因此在 RHEL 8、9 和 10 上,您可以使用下面的方案 A。如果 openssl version 显示的是 1.0.2 或更早版本(RHEL 7),请使用方案 B中的配置文件方法。

如果系统中没有安装 OpenSSL,请使用您所用版本对应的包管理器进行安装:

# RHEL 8, 9, and 10
sudo dnf install openssl
# RHEL 7
sudo yum install openssl

在 RHEL 8 及更高版本中,yum 是 dnf 的兼容别名,因此在这些版本上两个命令都可以使用。

方案 A:单命令方法(OpenSSL 1.1.1 和 3.x)

这是在 RHEL 8、9 和 10 上最快的方法。它首先生成私钥,然后构建 CSR,并将主题备用名称(SAN)以内联方式添加进去。

步骤 1:生成私钥

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out example.com.key

此操作会在当前目录中创建一个名为 example.com.key 的 2048 位 RSA 私钥。2048 位 RSA 是公共 CA 接受的最低标准;如果需要现代椭圆曲线密钥,可将算法选项替换为 -algorithm EC -pkeyopt ec_paramgen_curve:P-256。请妥善保管此文件:它保留在您的服务器上,绝不会发送给 CA。

步骤 2:创建带有 SAN 的 CSR

运行以下命令,并根据您自己的信息调整主题字段和域名:

openssl req -new -sha256 -key example.com.key -out example.com.csr 
-subj "/C=US/ST=California/L=San Jose/O=Your Company LLC/CN=example.com" 
-addext "subjectAltName=DNS:example.com,DNS:www.example.com"

将全文中的 example.com 替换为您的实际域名,并将主题字段设置为您自己的信息:

  • C:两位国家代码(例如 US)。
  • ST:完整的省份或州名称。
  • L:城市或所在地。
  • O:法定组织名称(对于单域名 DV 证书,可以省略)。
  • CN:主要的完全限定域名,例如 www.example.com。

在 subjectAltName 值中列出证书必须覆盖的每个主机名。现代浏览器根据 SAN 列表而非通用名称进行验证,因此请在其中包含每个名称,包括主域名。该命令会将 CSR 写入 example.com.csr。

方案 B:配置文件方法(旧版 OpenSSL)

如果 openssl version 显示的版本不支持 -addext 标志(OpenSSL 1.0.2 及更早版本,如 RHEL 7 上的版本),则应改用一个小型配置文件来定义 SAN。

步骤 1:创建配置文件(san.cnf)

使用文本编辑器创建一个名为 san.cnf 的文件,并粘贴以下内容,同时编辑您的域名和组织的相关值:

[ req ]
default_bits = 2048
prompt = no
distinguished_name = dn
req_extensions = req_ext

[ dn ]
C = US
ST = California
L = San Jose
O = Your Company LLC
CN = example.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = example.com
DNS.2 = www.example.com

如需添加更多主机名,请继续编号:DNS.3、DNS.4,依此类推。

步骤 2:生成密钥和 CSR

生成私钥:

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out example.com.key

然后使用配置文件创建 CSR:

openssl req -new -sha256 -key example.com.key -out example.com.csr -config san.cnf

验证 CSR

在提交之前,请确认 CSR 包含正确的详细信息以及有效的签名。以下命令会打印主题信息、SAN 列表、密钥大小,并验证该请求的自签名:

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

请检查 Subject 行和 X509v3 Subject Alternative Name 条目是否列出了您预期的每个域名,公钥是否至少为 2048 位 RSA(或 P-256 椭圆曲线密钥),以及签名算法是否为 SHA-256。显示 certificate request self-signature verify OK(旧版本显示为 verify OK)的行表示 CSR 和私钥匹配。如果您更喜欢使用浏览器进行操作,可以将 CSR 粘贴到我们的在线CSR 解码器中查看相同的详细信息。

提交 CSR

使用文本编辑器打开 example.com.csr 文件,并复制其全部内容,包括 -----BEGIN CERTIFICATE REQUEST----- 和 -----END CERTIFICATE REQUEST----- 标记行(每个标记两侧均使用五个连字符)。在向您的 SSL 供应商申请证书时,将整个内容块粘贴到订单表单中。

请将私钥文件 example.com.key 保留在服务器上。切勿将其发送给 CA,也不要粘贴到任何地方:它是密钥对中保密的那一半,绝不能脱离您的控制。CA 验证 CSR 并颁发证书后,请按照我们的Red Hat Linux SSL 安装说明进行安装。

常见问题

在 RHEL 上生成 CSR 时,私钥存储在哪里?

私钥会写入您在 -out 选项中指定的文件(例如 example.com.key),该文件位于您运行命令的目录中。它是在本地创建的,绝不会包含在 CSR 中。请将其备份到安全的地方并限制其权限,因为您需要这个确切的密钥来安装 CA 颁发的证书。

密钥应该使用 RSA 还是 ECDSA?

两者都被接受。2048 位 RSA 是广泛兼容的默认选项,也是公共 CA 允许的最低标准。椭圆曲线密钥(ECDSA P-256)体积更小、速度更快,同时提供同等的安全性;您可以将密钥选项替换为 -algorithm EC -pkeyopt ec_paramgen_curve:P-256 来生成它。无论采用哪种方式,CSR 都必须使用 SHA-256 签名,而上述命令已经做到了这一点。

我的 OpenSSL 版本不支持 -addext,该怎么办?

-addext 标志是在 OpenSSL 1.1.1 中加入的。如果您使用的是更旧的版本(例如 RHEL 7 上的 OpenSSL 1.0.2),请使用方案 B 中的配置文件方法,该方法通过 san.cnf 文件而非命令行来定义主题备用名称。

下单前如何检查我的 CSR 是否正确?

在服务器上运行 openssl req -noout -text -verify -in example.com.csr。它会打印主题信息、完整的 SAN 列表、密钥类型和大小以及签名算法,并确认 CSR 与其私钥是否匹配。请在将 CSR 粘贴到订单表单之前查看这些字段。

我应该将 CSR 的哪一部分粘贴到订单表单中?

请粘贴整个内容块,从 -----BEGIN CERTIFICATE REQUEST----- 到 -----END CERTIFICATE REQUEST-----(包括这两行),不要遗漏任何字符。两个标记行两侧均使用五个连字符。请勿粘贴私钥。

在 AlmaLinux、Rocky Linux 和 CentOS 上操作方式是否相同?

是的。AlmaLinux、Rocky Linux 和 CentOS Stream 与对应的 RHEL 版本二进制兼容,并附带相同的 OpenSSL,因此命令完全相同。如果您需要,我们还有专门的在 CentOS 上生成 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.