bg-tutorials

如何在 Nutanix 集群上生成 CSR

本指南将向您展示如何为 Nutanix 集群生成 CSR(证书签名请求),即您发送给证书颁发机构以获取 Prism Element(单集群控制台)和 Prism Central(多集群控制台)可信 SSL/TLS 证书的请求。Prism 并不包含内置的 CSR 向导,因此您需要使用 OpenSSL 在集群之外生成请求和匹配的私钥,将 CSR 提交给 CA,然后将签发的证书重新导入 Prism。

Nutanix 接受使用 SHA-256 签名的 RSA 2048 密钥,或 ECDSA 256(P-256)或 ECDSA 384(P-384)密钥。生成 CSR 时请选择其中一种密钥类型,否则 Prism 中的导入将会失败。以下步骤涵盖了 Windows(Windows 上的 OpenSSL)和 Linux/macOS,适用于当前的 AOS 版本(AOS 6.x 和 AOS 7.x)以及 Prism Central 2024.x / 2025.x。

开始之前

  • 在运行命令的工作站上安装 OpenSSL 1.1.1 或更高版本。macOS 和大多数 Linux 发行版都自带该工具。在 Windows 上,请安装一个维护良好的构建版本(例如 Shining Light Productions 提供的 Win64 OpenSSL 软件包),然后打开一个新的终端,以确保新的 openssl 命令已加入 PATH 中。
  • 用户在浏览器中输入以访问 Prism 的确切完全限定域名(FQDN),例如 prism.example.com。如果您有多个名称(一个 FQDN 加一个简短的主机名,或一个证书下的多个集群 VIP),请列出所有需要的名称,以便将它们全部添加为使用者备用名称(SAN)。
  • 您的组织信息:法定组织名称、所在城市、州或省,以及两位字母的 ISO 国家代码。这些信息是 OV/EV 证书所必需的,CA 会依据公开记录进行验证。

使用 OpenSSL 生成 CSR(一条命令,含 SAN)

这是最快的方法,只要您安装了 OpenSSL 1.1.1 或更高版本,就可以在 Windows、Linux 和 macOS 上使用。它会生成一个 2048 位的 RSA 密钥,以及一个设置了通用名称(Common Name)、填充了 SAN 扩展并使用 SHA-256 作为签名哈希算法的 CSR。

第 1 步:运行 OpenSSL 命令

打开一个终端(Windows 上的命令提示符或 PowerShell,macOS/Linux 上的 Terminal),切换到您希望保存密钥和 CSR 的文件夹,然后运行:

openssl req -new -newkey rsa:2048 -nodes -sha256 
  -keyout prism.example.com.key 
  -out prism.example.com.csr 
  -subj "/C=US/ST=California/L=San Jose/O=Example Inc/CN=prism.example.com" 
  -addext "subjectAltName=DNS:prism.example.com,DNS:prism"

在 Windows 命令提示符中,请将命令写在一行上(去掉反斜杠续行符)。以下是每个标志的作用:

  • -newkey rsa:2048 生成一个全新的 2048 位 RSA 密钥对。请坚持使用 2048 位:Nutanix 在 Private Key Type 下拉菜单中列出的支持的 RSA 大小就是 RSA 2048,并且有客户反馈在 Prism Central 上使用 RSA 4096 密钥会导致导入失败。如果您需要更强的密钥,请改用 ECDSA P-256 或 P-384(两者均受支持)。
  • -nodes 生成不带密码短语的私钥。Prism 导入的是未加密的 PEM 密钥,因此这一步能省去您之后再移除密码的操作。
  • -sha256 使用 SHA-256 对 CSR 进行签名。任何公共 CA 都不再接受 SHA-1。
  • -subj 在一行中设置可分辨名称(Distinguished Name)。请将每个值替换为您自己的信息。使用两位字母的 ISO 国家代码(如 USGBDE)。组织单位(OU)字段在公共证书中已被弃用,可以省略。
  • -addext “subjectAltName=DNS:…” 将使用者备用名称(Subject Alternative Name)扩展写入 CSR。列出客户端将使用的每个主机名,以逗号分隔,每个前面都加上 DNS: 前缀。浏览器会忽略通用名称,只匹配 SAN,因此这个列表才是最终显示在证书上的内容。

若要生成 ECDSA 密钥而非 RSA 密钥,请替换 -newkey 参数:

# ECDSA P-256 (Nutanix "ECDSA 256")
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes -sha256 
  -keyout prism.example.com.key -out prism.example.com.csr 
  -subj "/C=US/ST=California/L=San Jose/O=Example Inc/CN=prism.example.com" 
  -addext "subjectAltName=DNS:prism.example.com,DNS:prism"

# ECDSA P-384 (Nutanix "ECDSA 384") - use -sha384 to match the curve
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:secp384r1 -nodes -sha384 
  -keyout prism.example.com.key -out prism.example.com.csr 
  -subj "/C=US/ST=California/L=San Jose/O=Example Inc/CN=prism.example.com" 
  -addext "subjectAltName=DNS:prism.example.com,DNS:prism"

-pkeyopt ec_paramgen_curve: 这种写法在所有平台和 shell 环境中都适用——包括 Linux、macOS,以及 Windows 上的命令提示符和 PowerShell——无需单独的参数文件。(如果您使用的旧版 OpenSSL 构建不支持此选项,请先用 openssl ecparam -name prime256v1 -out ec.param 生成曲线参数,然后使用 -newkey ec:ec.param 代替。)

第 2 步:确认已生成两个文件

OpenSSL 会在当前文件夹中写入两个文件:

  • prism.example.com.key,即私钥。请对该文件保密并妥善备份。 Prism 会在安装过程中导入该文件,而且仅凭证书本身是无法恢复私钥的。
  • prism.example.com.csr,即您要发送给 CA 的 CSR。

第 3 步:提交前检查 CSR

建议快速检查一下通用名称、每一个 SAN 条目以及密钥大小是否正确。在同一台机器上运行:

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

请查看 Subject: 一行以及列出您所需全部主机名的 X509v3 Subject Alternative Name: 区块。如果您更喜欢通过浏览器进行检查,可以将 CSR 内容粘贴到 SSL Dragon 的 CSR 解码器 中确认相同的信息。

第 4 步:将 CSR 提交给证书颁发机构

使用任意文本编辑器打开 prism.example.com.csr。您会看到一段以如下方式开头和结尾的内容:

-----BEGIN CERTIFICATE REQUEST-----
MIICvDCCAaQCAQAwdzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWEx
... (many lines of base64) ...
-----END CERTIFICATE REQUEST-----

请选中整个区块,包括 BEGIN CERTIFICATE REQUESTEND CERTIFICATE REQUEST 这两行,复制后粘贴到订单表单的 CSR 字段中。CA 会验证该请求,签发证书,并通过电子邮件向您发送一个包含服务器证书以及一个或多个中间(和根)CA 证书的证书包。

替代方案:使用 OpenSSL 配置文件

如果您更愿意将请求参数保存在文件中(在重新签发同一证书或需要添加大量 SAN 时会很方便),请将以下内容放入一个名为 nutanix.cnf 的文件中:

[ req ]
default_bits       = 2048
default_md         = sha256
prompt             = no
encrypt_key        = no
distinguished_name = req_dn
req_extensions     = v3_req

[ req_dn ]
C  = US
ST = California
L  = San Jose
O  = Example Inc
CN = prism.example.com

[ v3_req ]
basicConstraints     = CA:FALSE
keyUsage             = digitalSignature, keyEncipherment
extendedKeyUsage     = serverAuth, clientAuth
subjectAltName       = @alt_names

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

[ req_dn ] 下的值替换为您自己的信息,并在 [ alt_names ] 下为每个主机名添加一行 DNS.n。然后一次性生成密钥和 CSR:

openssl req -new -nodes -newkey rsa:2048 -sha256 
  -keyout prism.example.com.key 
  -out prism.example.com.csr 
  -config nutanix.cnf

其输出结果与上文的单命令方法完全相同:一个 2048 位的 RSA 密钥,以及一个编码了您的主体信息和每个 SAN 的 CSR。发送前请使用 openssl req -noout -text -in prism.example.com.csr 进行检查。

CA 签发证书之后

CA 会返回已签发的服务器证书以及证书链(一个或多个中间证书和根 CA)。Prism 需要导入三个文件:

  • 私钥(Private Key):您使用 OpenSSL 生成的未加密 PEM 格式 .key 文件。
  • 公共证书(Public Certificate):您签发的 PEM 格式服务器证书(通常带有 .crt.pem 扩展名)。
  • CA 证书/证书链(CA Certificate/Chain):一个包含所有中间证书以及根 CA 的单个 PEM 文件,按顺序拼接,根 CA 放在最后。Prism 只提供一个证书链字段,因此需要将所有内容合并为一个文件。

有关完整的安装流程(Prism Element 和 Prism Central 中的界面操作路径、私钥类型选择,以及导入后的短暂 Web 服务重启),请参阅我们的如何在 Nutanix 集群上安装 SSL 证书指南。要在导入后检查实际生效的证书,可以使用 SSL 检测工具 扫描 Prism 的 URL(如果 Prism 位于内部网络中,请在该网络内部运行检查,或直接在浏览器中查看证书)。

更喜欢使用网页表单?使用我们的 CSR 生成器

如果您不想运行 OpenSSL,我们的CSR 生成器可以通过一个表单生成等效的 CSR 和私钥。请选择 RSA 2048ECDSA P-256ECDSA P-384,以确保输出结果符合 Nutanix 的要求,填写您的主体信息和 SAN 列表,然后下载密钥和 CSR。请按照处理 OpenSSL 输出文件的方式妥善保存密钥文件:Prism 无法重新签发或恢复该密钥。

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

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

龙飞行的详细图像
撰写人

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