vCenter Server Security Token Service (STS) 是一项发布、验证和续订安全令牌的 Web 服务。

作为令牌颁发者,Security Token Service (STS) 使用私钥对令牌进行签名,并发布公用证书供服务验证令牌签名。vCenter Server 管理 STS 签名证书并将其存储在 VMware Directory Service (vmdir) 中。令牌的生存期可能很长,长期以来可能已由多个密钥中的任何一个进行签名。

要获取令牌,用户须向 STS 接口提供其主凭据。主凭据取决于用户类型。

表 1. STS 用户和凭据
用户类型 主凭据
解决方案用户 有效证书。
其他用户 vCenter Single Sign-On 标识源中提供的用户名和密码。

STS 将根据主凭据对用户进行身份验证,并构建包含用户属性的 SAML 令牌。

默认情况下,VMware Certificate Authority (VMCA) 会生成 STS 签名证书。您可以使用新的 VMCA 证书刷新 STS 签名证书。您还可以导入默认 STS 签名证书并将其替换为自定义或第三方生成的 STS 签名证书。除非贵公司的安全策略要求替换所有证书,否则不要替换 STS 签名证书。

您可以使用 vSphere Client 执行以下操作:

  • 刷新 STS 证书
  • 导入并替换自定义和第三方生成的 STS 证书
  • 查看 STS 证书详细信息,例如过期日期

您还可以使用命令行替换自定义和第三方生成的 STS 证书。

STS 证书持续时间和过期

全新安装 vSphere 7.0 Update 1 和更高版本将创建持续时间为 10 年的 STS 签名证书。当 STS 签名证书即将过期时,将从 90 天开始发出警报向您警告,每周发送一次,然后还剩七天时每天发送一次。

注: 在某些情况下,替换 STS 签名证书可能会更改证书的持续时间。执行证书替换时,请注意颁发日期和过期日期。

STS 证书自动续订

在 vSphere 8.0 及更高版本中,vCenter Single Sign-On 将自动续订 VMCA 生成的 STS 签名证书。自动续订发生在 STS 签名证书过期之前,以及触发 90 天过期警报之前。如果自动续订失败,vCenter Single Sign-On 会在日志文件中创建一条错误消息。如有必要,您可以手动刷新 STS 签名证书。

注: vCenter Single Sign-On 不会自动续订自定义生成的或第三方 STS 签名证书。

刷新和导入和替换 STS 证书

在 vSphere 8.0 及更高版本中,刷新或导入和替换 STS 签名证书不需要重新启动 vCenter Server,因此可避免任何停机。此外,在链接配置中,刷新或导入和替换单个 vCenter Server 上的 STS 签名证书会更新所有链接的 vCenter Server 系统上的 STS 证书。

注: 在某些情况下,刷新或导入和替换 STS 签名证书可能需要手动重新启动 vCenter Server 系统。

使用 vSphere Client 刷新 vCenter Server STS 证书

可以使用 vSphere Client 刷新 vCenter Server STS 签名证书。VMware Certificate Authority (VMCA) 颁发新证书并替换当前证书。

刷新 STS 签名证书时,VMware Certificate Authority (VMCA) 会颁发新证书,并替换 VMware Directory Service (vmdir) 中的当前证书。STS 开始使用新证书颁发新令牌。在增强型链接模式配置中,vmdir 会将新证书从颁发 vCenter Server 系统上载到链接的所有 vCenter Server 系统。刷新 STS 签名证书时,无需重新启动 vCenter Server 系统,也无需重新启动增强型链接模式配置中的任何其他 vCenter Server 系统。

如果使用自定义生成的 STS 签名证书或第三方 STS 签名证书,则刷新操作会使用 VMCA 颁发的证书覆盖该证书。要更新自定义生成的或第三方 STS 签名证书,请使用导入和替换选项。请参见使用 vSphere Client 导入并替换 vCenter Server STS 证书

VMCA 颁发的 STS 签名证书的有效期为 10 年且不面向外部。除非贵公司的安全策略需要,否则请勿替换此证书。

前提条件

对于证书管理,您必须提供本地域管理员的密码(默认为 [email protected])。如果要续订证书,还必须为在 vCenter Server 系统上具有管理员特权的用户提供 vCenter Single Sign-On 凭据。

过程

  1. 使用 vSphere Client登录 vCenter Server
  2. [email protected] 或 vCenter Single Sign-On 管理员组的其他成员指定用户名和密码。
    如果在安装时指定了不同的域,请以 administrator@ mydomain 身份登录。
  3. 导航到证书管理 UI。
    1. 主页菜单中,选择系统管理
    2. 证书下,单击证书管理
  4. 如果系统出现提示,请输入 vCenter Server 的凭据。
  5. STS 签名选项卡下,选择所需的证书,然后单击使用 vCenter 证书刷新
    如果使用自定义生成的 STS 签名证书或第三方 STS 签名证书,则刷新操作会使用 VMCA 生成的证书覆盖该证书。
    注: 如果出于合规性原因而使用第三方证书,刷新可能会导致您的 vCenter Server 系统不合规。此外,如果使用自定义生成的 STS 签名证书或第三方 STS 签名证书,则 Security Token Service 不再将该自定义证书或第三方证书用于令牌签名。
  6. 单击刷新
    此时 VMCA 会刷新此 vCenter Server 系统以及链接的任何 vCenter Server 系统上的 STS 签名证书。
  7. (可选) 如果显示强制刷新按钮,表明 vCenter Single Sign-On 检测到问题。单击强制刷新之前,请考虑以下潜在结果。
    • 如果所有受影响的 vCenter Server 系统均未至少运行 vSphere 7.0 Update 3,则不支持证书刷新。
    • 选择强制刷新要求重新启动所有 vCenter Server 系统,并且可能会致使这些系统在重新启动之前无法正常运行。
    1. 如果不确定影响,请单击取消并研究您的环境。
    2. 如果确定影响,请单击强制刷新继续刷新,然后手动重新启动 vCenter Server 系统。

使用 vSphere Client 导入并替换 vCenter Server STS 证书

可以使用 vSphere Client 导入并将 vCenter Server STS 证书替换为自定义生成的证书或第三方证书。

要导入并替换默认 STS 签名证书,必须先生成新证书。导入和替换 STS 签名证书时,VMware Directory Service (vmdir) 会将新证书从颁发 vCenter Server 系统上载到链接的所有 vCenter Server 系统。

STS 证书不面向外部。除非贵公司的安全策略需要,否则请勿替换此证书。

前提条件

对于证书管理,您必须提供本地域管理员的密码(默认为 [email protected])。还必须为在 vCenter Single Sign-On 系统上具有管理员特权的用户提供 vCenter Server 凭据。

过程

  1. 使用 vSphere Client登录 vCenter Server
  2. [email protected] 或 vCenter Single Sign-On 管理员组的其他成员指定用户名和密码。
    如果在安装时指定了不同的域,请以 administrator@ mydomain 身份登录。
  3. 导航到证书管理 UI。
    1. 主页菜单中,选择系统管理
    2. 证书下,单击证书管理
  4. 如果系统出现提示,请输入 vCenter Server 的凭据。
  5. STS 签名选项卡下,选择所需的证书,然后单击导入并替换证书
  6. 选择 PEM 文件。
    PEM 文件包括签名证书链和私钥。
  7. 单击替换
    将在此 vCenter Server 系统和链接的任何 vCenter Server 系统上替换 STS 签名证书。除非另有说明,否则无需重新启动 vCenter Server 系统。

使用命令行替换 vCenter Server STS 证书

可以使用 CLI 将 vCenter Server STS 证书替换为自定义生成的证书或第三方证书。

要使用公司所需的证书或刷新即将过期的证书,可以替换现有 STS 签名证书。要替换默认 STS 签名证书,必须先生成新证书。

STS 证书不面向外部。除非贵公司的安全策略需要,否则请勿替换此证书。

小心: 您必须使用此处所述的过程。请勿直接替换文件系统中的证书。

前提条件

启用 SSH,以通过 SSH 登录到 vCenter Server。请参见使用 vCenter Server Shell 管理 vCenter Server

过程

  1. 以 root 身份登录 vCenter Server Shell。
  2. 创建证书。
    1. 创建顶级目录以保存新证书并确人该目录的位置。
      mkdir newsts
      cd newsts
      pwd 
      #resulting output: /root/newsts
    2. certool.cfg 文件复制到新目录中。
      cp /usr/lib/vmware-vmca/share/config/certool.cfg /root/newsts
      
    3. 使用诸如 Vim 等命令行编辑器,打开 certool.cfg 文件的副本并进行编辑,以便使用本地 vCenter Server IP 地址和主机名。国家/地区为必填字段且必须是两个字符,如以下示例所示。
      #
      # Template file for a CSR request
      #
      
      # Country is needed and has to be 2 characters
      Country = US
      Name = STS
      Organization = ExampleInc
      OrgUnit = ExampleInc Dev
      State = Indiana
      Locality = Indianapolis
      IPAddress = 10.0.1.32
      Email = [email protected]
      Hostname = homecenter.exampleinc.local
    4. 生成密钥。
      /usr/lib/vmware-vmca/bin/certool --server localhost --genkey --privkey=/root/newsts/sts.key --pubkey=/root/newsts/sts.pub
      
    5. 生成证书。
      /usr/lib/vmware-vmca/bin/certool --gencert --cert=/root/newsts/newsts.cer --privkey=/root/newsts/sts.key --config=/root/newsts/certool.cfg
      
    6. 创建带有证书链和私钥的 PEM 文件。
      cat newsts.cer /var/lib/vmware/vmca/root.cer sts.key > newsts.pem
  3. 更新 STS 签名证书,例如:
    /opt/vmware/bin/sso-config.sh -set_signing_cert -t vsphere.local /root/newsts/newsts.pem
    此时 VMCA 会刷新此 vCenter Server 系统以及链接的任何 vCenter Server 系统上的 STS 签名证书。

使用 vSphere Client 查看活动的 vCenter Server STS 签名证书链

您可以使用 vSphere Client 查看活动的 vCenter Server STS 签名证书链和证书信息,例如失效日期。

过程

  1. 使用 vSphere Client登录 vCenter Server
  2. 输入至少具有读取特权的用户的用户名和密码。
  3. 导航到证书管理 UI。
    1. 主页菜单中,选择系统管理
    2. 证书下,单击证书管理
  4. 如果系统出现提示,请输入 vCenter Server 的凭据。
  5. STS 签名选项卡下,选择一个证书,然后展开该证书。
    此时将显示证书和颁发信息,包括:
    • “有效期至”日期
    • 表示证书有效的绿色对勾和表示证书过期的橙色对勾警告

使用命令行确定 LDAPS SSL 证书的过期日期

使用基于 LDAPS 的 Active Directory 时,可以上载适用于 LDAP 流量的 SSL 证书。SSL 证书在预定义的使用期限之后过期。可以使用 sso-config.sh 命令查看证书的过期日期,以便知悉要在证书过期之前将其替换或续订。

当活动 LDAP SSL 证书接近过期日期时,vCenter Server 系统会发出警示。

只有使用基于 LDAP 的 Active Directory 或 OpenLDAP 标识源并为服务器指定 ldaps:// URL 时,才可查看证书过期信息。

前提条件

启用 SSH,以通过 SSH 登录到 vCenter Server。请参见使用 vCenter Server Shell 管理 vCenter Server

过程

  1. 以 root 身份登录到 vCenter Server
  2. 运行下列命令。
    /opt/vmware/bin/sso-config.sh -get_identity_sources

    忽略 SLF4J 消息。

  3. 要确定过期日期,请查看 SSL 证书的详细信息并验证 NotAfter 字段。