在 VMware Horizon 8(搭配 vSphere)环境中,使用新创建 Root CA 颁发证书的用户可能遇到智能卡(DOD 令牌)登录失败问题。核心解决思路是将新 Root CA 导入连接服务器信任库,但实操中常面临文件识别混淆、密钥库密码缺失等难题。本文结合实际案例,详细拆解信任库文件确认、证书批量导入、服务配置等关键步骤,帮助运维人员高效解决 50 个 Root CA 批量迁移及认证问题,规避操作风险。
一、问题背景
在 VMware Horizon 8 环境中,当用户使用新创建的 Root CA 颁发的证书通过智能卡(如 DOD 令牌)认证时,可能出现登录失败。这是因为 Horizon 连接服务器的信任库未包含该新 Root CA 证书,导致无法验证用户证书合法性。解决该问题的核心是将新 Root CA 及相关证书导入服务器信任库,实操中需解决文件识别、密码缺失两大关键难题。
二、核心问题解析与解决方案
(一)信任库文件确认
原指南中提及的 "truststorefile.key" 文件,在实际 Horizon 部署中通常以 "keystore" 命名存在,路径为Omnissa\Server\sslgateway\conf\。该文件即为 Horizon 连接服务器的信任库文件,无需额外寻找其他文件,可直接用于证书导入操作。
(二)密钥库密码缺失处理
若执行keytool -import -alias alias -file root_certificate -keystore keystore -storetype JKS命令时,因缺失密码无法操作,建议直接创建新的密钥库文件,而非破解原有密码。对于需导入 50 个 Root CA 的场景,新密钥库可统一管理所有证书,操作更高效:
先通过 ActivClient 等工具导出 DOD 令牌中的所有证书(含根证书、中间证书、NSS-SW 证书及互操作性证书),并存放在易查找的 "certs" 文件夹中;
收集环境中已有的 50 个 Root CA 证书,确保无遗漏;
运行keytool -genkey -alias horizon-truststore -keystore new_truststore.jks -storetype JKS创建新密钥库,设置并记录自定义密码(需妥善保管)。
(三)证书批量导入与配置
针对单个证书导入:使用keytool -import -alias [证书别名] -file [证书路径] -keystore new_truststore.jks -storetype JKS命令,按提示输入新密钥库密码,完成单个 Root CA 导入;
批量导入优化:若需导入 50 个证书,可编写 PowerShell 脚本批量执行上述命令,避免重复操作(脚本需包含证书路径遍历、别名自动命名等逻辑);
替换原有密钥库:将新创建的new_truststore.jks文件重命名为 "keystore",替换Omnissa\Server\sslgateway\conf\路径下的原文件(建议先备份原文件,避免数据丢失)。
(四)服务重启与验证
证书导入完成后,需重启 Horizon Connection Server 服务,确保配置生效。重启后,让用户通过智能卡(DOD 令牌)重新尝试登录,验证认证是否成功。若仍有问题,需检查是否遗漏中间证书或互操作性证书,补充导入后再次测试。
三、注意事项
备份与恢复:Horizon 环境的密钥库备份恢复可靠性较低,Omnissa 官方建议若配置出错,优先选择重建服务器而非依赖快照或备份恢复;
证书完整性:导入时需确保包含完整的证书链,除根 CA 外,DOD 相关场景还需补充中间证书、NSS-SW 证书及互操作性证书,避免因证书缺失导致认证失败;
操作权限:执行 keytool 命令及替换文件时,需使用管理员权限,防止因权限不足导致操作失败;
文档留存:建议记录新密钥库密码、证书导入清单及操作步骤,便于后续维护或新增证书时参考,避免因人员变动导致配置断层。