一文搞懂!用自定义 TLS 证书部署 VCF 的 JSON 配置技巧

张开发
2026/4/8 2:09:38 15 分钟阅读

分享文章

一文搞懂!用自定义 TLS 证书部署 VCF 的 JSON 配置技巧
在企业私有云部署中VMware Cloud Foundation(VCF)的安全性至关重要而自定义 TLS 证书能大幅提升通信加密等级。本文针对 VCF 5.x 和 9.x 版本详细讲解如何通过配置自定义 JSON 文件让 VCF 兼容自定义 CA 签名的 TLS 证书。从核心配置字段解析、不同版本部署示例到证书字符串生成工具使用全程用通俗语言和实操步骤呈现帮助 IT 运维人员快速掌握安全部署技巧兼顾合规性与实用性。一文搞懂!用自定义 TLS 证书部署 VCF 的 JSON 配置技巧在企业级私有云建设中VMware Cloud Foundation(VCF)作为一站式云基础设施平台其部署安全性直接关系到后续业务稳定运行。TLS 证书作为网络通信的 “安全锁”很多企业会选择使用自定义 CA(证书颁发机构)签名的 TLS 证书而非默认证书以满足内部安全合规要求。但不少运维人员在部署 VCF 时会遇到自定义 TLS 证书不兼容的问题。其实只需在 JSON 部署清单中添加专属配置就能轻松解决这一难题。本文将从配置原理、实操步骤、版本适配和注意事项四个维度全面拆解该方案。一、核心原理为什么需要添加 securitySpec 配置?VCF 默认采用自带的 TLS 证书进行通信加密但当 ESXi 主机已预装自定义 CA 签名的 TLS 证书时VCF 部署工具(5.x 版本的 Cloud Builder 或 9.x 版本的 VCF Installer)需要明确识别该证书的合法性。这就需要在 JSON 部署清单中添加securitySpec配置段核心作用是告诉 VCF 部署工具“当前 ESXi 主机使用的是自定义证书需通过指定的根 CA 证书验证身份”。securitySpec配置段的核心逻辑的是 “声明证书模式 提供验证依据”esxiCertsMode字段设置为 “Custom”表明启用自定义证书模式;rootCaCerts数组则存储根 CA 证书信息其中alias是证书别名(方便识别)certChain是证书链字符串(包含完整的证书内容用于身份验证)。二、关键配置解析securitySpec 字段详解要让配置生效首先得搞懂每个字段的含义和填写规范避免因格式错误导致部署失败字段名称 作用说明 填写要求esxiCertsMode 声明 ESXi 主机的证书模式 固定填写 “Custom”(区分大小写)rootCaCerts 存储根 CA 证书的数组可支持多个根证书(如需添加多个按相同格式追加对象) 数组内每个元素为一个证书对象alias 证书别名用于 VCF 工具识别不同证书自定义命名(如 “company-CA”“office-CA”)certChain 证书链字符串包含完整的 PEM 格式证书需保留 “-----BEGIN CERTIFICATE-----” 和 “-----END CERTIFICATE-----” 标记换行用 “\n” 表示举个标准的securitySpec配置示例(可直接复制修改)securitySpec: { esxiCertsMode: Custom, rootCaCerts: [ { alias: company-CA, certChain: [ -----BEGIN CERTIFICATE-----\nMIIDqzCCApugAwIBAgIBADANBgkqhkiG9w0BAQQFADCBgzELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAk1BMQswCQYDVQQHEwJPTjELMAkGA1UECgwCRVMxCzAJBgNVBAsTAkNBMRcwFQYDVQQDEw5FUyBDQSBTaWduZXIgQ0EwHhcNMjMwOTA1MDgwMDAwWhcNMjgwOTA1MDgwMDAwWjCBgzELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAk1BMQswCQYDVQQHEwJPTjELMAkGA1UECgwCRVMxCzAJBgNVBAsTAkNBMRcwFQYDVQQDEw5FUyBDQSBTaWduZXIgQ0EwggEiMA0GCSqGSIb3DQEBBQUAA4IBDwAwggEKAoIBAQDQwH9F3tP5uZt5dG99Q5a6G6X7f8Z7a8L5x4y6z7Q890a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6A7B8C9D0E1F2G3H4I5J6K7L8M9N0O1P2Q3R4S5T6U7V8W9X0Y1Z234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890\n-----END CERTIFICATE----- ] } ] }三、分版本部署示例5.x 与 9.x 配置实操不同 VCF 版本的 JSON 部署清单结构略有差异但securitySpec的添加逻辑一致。以下是完整的 abbreviated 示例(补充原文省略字段方便直接套用)1. VCF 5.x 版本完整配置示例{ managementPoolName: vcf-m01-np01, sddcManagerSpec: { secondUserCredentials: { username: vcf, password: 企业自定义密码建议包含大小写数字特殊字符 }, ipAddress: SDDC Manager的IP地址如192.168.1.100, hostname: sddcm01, rootUserCredentials: { username: root, password: root账户密码需符合VCF密码复杂度要求 }, localUserPassword: 本地用户密码 }, sddcId: vcf-m01, taskName: workflowconfig/workflowspec-ems.json, ntpServers: [ ntp.aliyun.com, // 可替换为企业内部NTP服务器 time.windows.com ], dnsServers: [ 192.168.1.2, // 填写企业DNS服务器地址 8.8.8.8 ], securitySpec: { esxiCertsMode: Custom, rootCaCerts: [ { alias: company-CA, certChain: [ -----BEGIN CERTIFICATE-----\n替换为你的完整证书内容保留换行符\\n\n-----END CERTIFICATE----- ] } ] } }2. VCF 9.x 版本完整配置示例VCF 9.x 简化了部分配置字段更注重易用性securitySpec添加位置与 5.x 一致{ sddcId: vcf-m01, vcfInstanceName: 企业VCF 9.x实例, workflowType: VCF, version: 9.0.0.0, ntpServers: [ ntp.aliyun.com ], dnsServers: [ 192.168.1.2 ], sddcManager: { ipAddress: 192.168.1.100, rootPassword: 符合复杂度的密码, adminPassword: 管理员密码 }, securitySpec: { esxiCertsMode: Custom, rootCaCerts: [ { alias: company-CA, certChain: [ -----BEGIN CERTIFICATE-----\n替换为你的完整证书内容保留换行符\\n\n-----END CERTIFICATE----- ] } ] } }四、实用工具快速生成证书链字符串certChain字段要求填写 “单行带换行符” 的证书字符串直接复制 PEM 格式证书会出现格式错误。这里推荐使用 AWK 命令快速转换步骤如下1. 命令功能说明AWK 是 Linux/Unix 系统自带的文本处理工具该命令能自动去除证书中的多余换行符并用 “\n” 替换原有换行生成符合要求的字符串awk NF {sub(/\r/, ); printf %s\\n, $0;} mycert.pemNF过滤空行(避免证书中的空行导致配置错误)sub(/\r/, )去除 Windows 系统下的回车符(防止格式混乱)printf %s\\n, $0将每一行内容拼接为单行并在每行末尾添加 “\n”2. 使用步骤将自定义 CA 证书保存为mycert.pem文件(确保是 PEM 格式后缀为.pem);登录 Linux 服务器或 Windows Subsystem for Linux(WSL);将mycert.pem文件上传到服务器执行上述命令;复制命令输出的字符串直接粘贴到certChain数组中即可。五、注意事项避免部署踩坑证书格式验证确保证书是 PEM 格式(以 “-----BEGIN CERTIFICATE-----” 开头“-----END CERTIFICATE-----” 结尾)不支持 DER 等其他格式;密码填写规范JSON 配置中的密码需符合 VCF 要求(至少 8 位包含大小写字母、数字和特殊字符)避免使用纯数字或简单密码;版本兼容性securitySpec配置仅支持 VCF 5.x 及以上版本低版本需先升级再配置;多证书配置如需添加多个根 CA 证书在rootCaCerts数组中按相同格式追加证书对象即可示例如下rootCaCerts: [ { alias: company-CA-1, certChain: [证书1字符串] }, { alias: company-CA-2, certChain: [证书2字符串] } ]配置校验部署前可使用 JSON 在线校验工具(如json.cn)检查配置文件格式避免语法错误。

更多文章