本指南将向您展示如何为 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 国家代码(如 US、GB、DE)。组织单位(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 REQUEST 和 END 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 2048、ECDSA P-256 或 ECDSA P-384,以确保输出结果符合 Nutanix 的要求,填写您的主体信息和 SAN 列表,然后下载密钥和 CSR。请按照处理 OpenSSL 输出文件的方式妥善保存密钥文件:Prism 无法重新签发或恢复该密钥。


