激活智能卡身份验证之前,必须配置 vCenter Server 以请求客户端证书。

配置使用端口 3128,该端口在 vCenter Server 上自动进行设置和打开。

前提条件

将证书颁发机构 (CA) 证书复制到 vCenter Server 系统,以用于创建可信客户端 CA 存储。此存储必须包含 CA 颁发的用于客户端证书的可信证书。此处的客户端是在智能卡过程中用于提示最终用户提供信息的浏览器。

注: vCenter Server 7.0 及更高版本支持 HTTP/2 协议。所有现代浏览器和应用程序(包括 vSphere Client)都使用 HTTP/2 连接到 vCenter Server。但是,智能卡身份验证需要使用 HTTP/1.1 协议。激活智能卡身份验证将对 HTTP/2 取消激活应用程序层协议协商(ALPN, https://tools.ietf.org/html/rfc7301),从而有效阻止浏览器使用 HTTP/2。仅使用 HTTP/2 而不依赖 ALPN 的应用程序将继续工作。

要完成智能卡身份验证,必须允许客户端访问相应 vCenter Server 上的端口 3128/TCP。检查边界防火墙以确保已授予访问权限。

在通过智能卡登录期间,连接将重定向到端口 3128。端口 3128 仅支持预配置的双向身份验证连接,并且不用作直接浏览器端点。它不会返回 HSTS 标头。如果您的漏洞扫描程序报告此行为,可以放心忽略。

过程

  1. 以 root 用户身份登录设备 vCenter Server shell。
  2. 使用确切路径和 PEM 名称 (/usr/lib/vmware-sso/vmware-sts/conf/clienttrustCA.pem) 在 vCenter Server 上创建可信客户端 CA 存储。
    警告: 必须使用确切的路径和 PEM 名称 ( /usr/lib/vmware-sso/vmware-sts/conf/clienttrustCA.pem)。
    1. 更改为 /usr/lib/vmware-sso/ 目录。
      cd /usr/lib/vmware-sso/
    2. 要创建可信客户端 CA 存储,请运行 openssl 命令,并将可信签名证书作为输入。例如,以下命令将从 xyzCompanySmartCardSigningCA.cer 可信签名证书创建 clienttrustCA.pem 文件。
      openssl x509 -inform PEM -in xyzCompanySmartCardSigningCA.cer > /usr/lib/vmware-sso/vmware-sts/conf/clienttrustCA.pem
      可以通过运行 openssl 命令并使用“>>”运算符附加其他证书,将其他证书添加到可信客户端 CA 存储。例如,以下命令可将 xyzCompanySmartCardSigningCA2.cer 文件附加到现有的 clienttrustCA.pem 文件。
      openssl x509 -inform PEM -in xyzCompanySmartCardSigningCA2.cer >> /usr/lib/vmware-sso/vmware-sts/conf/clienttrustCA.pem
  3. 要验证 clienttrustCA.pem 文件的内容是否包含对智能卡证书进行签名的可信 CA,请运行 keytool 命令。
    例如:
    keytool -printcert -file /usr/lib/vmware-sso/vmware-sts/conf/clienttrustCA.pem | grep -i "owner\|sha1\|issuer:\|valid"
  4. 确认 CA 名称与智能卡用户证书链相匹配。
    例如,您可以运行以下命令。
    sso-config.sh -get_authn_policy -t vsphere.local | grep trusted
    根证书和中间证书必须具有匹配的指纹、名称、有效日期等。
    注: 您还可以使用 vSphere Client管理 > Single Sign On > 配置 > 身份提供程序 > 智能卡身份验证 > 智能卡身份验证设置 > 可信 CA 证书 > 添加)。
  5. 重新启动 STS 服务。
    service-control --restart sts