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 及更高版本中,yumdnf 的兼容别名,因此在这些版本上两个命令都可以使用。

方案 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.3DNS.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 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.