如何迁移到适用于 Service Fabric 的 TLS(传输层安全性)1.3

本文介绍如何在 Service Fabric 群集上启用 TLS 1.3。 TLS 可帮助管理群集的 HTTP 终结点。

如果仅使用证书且不需要为群集定义终结点,则只需启用独占身份验证模式。 若要启用此模式,只需完成升级到最新的 Service Fabric 运行时版本启用独占身份验证模式步骤。 适当时进行标注。 如果以后决定启用基于令牌的身份验证,则需要完成跳过的步骤。

注意

本文中的步骤适用于 Windows 计算机。 目前不支持 Linux。

注意

Service Fabric 版本 10.1CU2 (10.1.1951.9590) 引入了对 TLS 1.3 的支持。 但是,对在 Windows 8 兼容模式下运行的用户应用程序的 Service Fabric 传输终结点使用 TLS 1.3 时,不会启用 TLS 1.3。 在此情况下,必须在 Windows 应用程序清单中声明 Windows 10 兼容模式才能成功启用 TLS 1.3。

先决条件

  1. 确定群集的 Service Fabric 运行时版本。 可以通过在 Azure 门户中登录、在 Service Fabric Explorer 中查看群集或通过 PowerShell 连接到群集来查看群集的运行时版本。
  2. 确保群集中的所有节点都升级到 Windows Server 2022。
  3. 确定是否使用基于令牌的身份验证。 可以签入门户或在 Service Fabric Explorer 中查看群集清单。 如果使用基于令牌的身份验证,Microsoft Entra ID 设置将显示在群集清单中。
  4. 根据群集类型,对部署使用正确的 API 版本:
    • 对于托管群集,请使用 2023-12-01-preview 或更高版本
    • 对于经典群集,请使用 2023-11-01-preview 或更高版本

完成这些先决条件步骤后,即可在 Service Fabric 群集上启用 TLS 1.3。

升级到最新的 Service Fabric 运行时版本

在此步骤中,将群集的运行时版本升级到支持 TLS 1.3 的最新版本。

按照升级群集上运行的 Service Fabric 版本中的步骤进行操作。 完成后,请返回到本文。

如果不使用基于令牌的身份验证对群集进行身份验证,应跳过接下来的两个步骤。 继续启用独占身份验证模式。 如果使用基于令牌的身份验证对群集进行身份验证,请转到下一步。

定义新的 HTTP 终结点

注意

如果不使用基于令牌的身份验证对群集进行身份验证,则应跳过本步骤和下一步。 继续启用独占身份验证模式

在此步骤中,将定义一个新的 HTTP 终结点,用于对群集执行基于令牌的身份验证。 必须定义新终结点,因为 TLS 1.3 不容易支持混合模式身份验证,其中包括 X.509 证书和 OAuth 2.0 持有者令牌。 Service Fabric 群集管理终结点通常使用混合模式身份验证,因此在不创建新终结点的情况下启用 TLS 1.3 会中断群集管理终结点。

定义专用于基于令牌的身份验证的新终结点,并为群集中的每个节点类型执行此操作。 在以下 JSON 代码片段中,我们演示了如何使用示例端口号 19079 在群集清单中定义终结点:

"nodeTypes": [
  {
    "name": "parameters('vmNodeType0Name')]",
    ...
    "httpGatewayTokenAuthEndpointPort": "19079",
    ...
  }
]

可以使用任何端口号。 它在整个群集中应该是相同的值,并且应从为 Service Fabric 运行时保留的端口范围中选择。

若要部署新终结点,有两个选项:

  • 使用新清单升级现有群集的配置
  • 在新群集的部署时定义终结点

部署一个新群集

可以按照适用于你所使用的 Service Fabric 群集类型的相应快速入门中的步骤操作。 请确保编辑模板,以包含之前在示例 JSON 代码片段中详述的新终结点定义。

迁移到新的令牌身份验证终结点

注意

如果不使用基于令牌的身份验证对群集进行身份验证,则应跳过本步骤和上一步。 继续启用独占身份验证模式

在此步骤中,需要查找并更新所有使用基于令牌的身份验证的客户端,以针对新的令牌身份验证终结点。 这些客户端包括脚本、代码或服务。 当端口开始接受 TLS 1.3 连接时,仍在寻址旧网关端口的任何客户端都会中断。 另请注意,此端口可以参数化或具有与 Service Fabric 定义的默认值不同的值。

需要进行的一些更改示例:

  • Microsoft Entra ID 应用程序
  • 引用现有终结点的任何脚本
  • 负载均衡器 (LB) 入站网络地址转换 (NAT)、运行状况探测和引用现有终结点的 LB 规则
  • 网络安全组 (NSG) 规则

还需要将需要基于令牌的身份验证的流量迁移到新终结点。

启用独占身份验证模式

在此步骤中,将启用独占身份验证模式。 作为一项安全机制,在群集所有者启用独占身份验证模式之前,默认 HTTP 网关终结点不提供 TLS 1.3。

enableHttpGatewayExclusiveAuthMode 是默认值为 false 的新设置。 将此新设置设置为 true。 如果使用基于令牌的身份验证,则可以在前面的步骤中与新的终结点定义同时设置 enableHttpGatewayExclusiveAuthMode。 此设置更新仅按顺序引入,以最大程度地减少中断的可能性。

警告

如果用户未完全迁移到新终结点集,则这是一项中断性变更。

重要

如果群集上启用了基于令牌的身份验证,但尚未指定用于基于令牌的身份验证的单独终结点,Service Fabric 运行时将阻止启用独占身份验证模式。

但是,群集中的任何内容都无法检测到尝试针对新独占的默认 HTTP 网关端口使用令牌进行身份验证的外部客户端中的中断。

将此新设置引入群集配置后,你将失去对上一终结点的基于令牌的访问权限。 如果已完成定义新的 HTTP 终结点步骤,则可以通过定义的新端口访问 Service Fabric Explorer。

若要更新 enableHttpGatewayExclusiveAuthMode 设置,有两个选项:

  • 使用新清单升级现有群集的配置
  • 在新群集的部署时定义终结点

现有群集配置升级

在步骤 4 中编辑 JSON 时,请确保更新 properties 元素,以包括以下 JSON 代码片段中显示的新设置。

  "enableHttpGatewayExclusiveAuthMode": true

部署一个新群集

可以按照适用于你所使用的 Service Fabric 群集类型的相应快速入门中的步骤操作。 请确保编辑模板,以包含之前在示例 JSON 代码片段中详述的新终结点定义。

后续步骤

将群集迁移到 TLS 1.3 后,无需执行任何特定步骤。 但是,以下链接中提供了一些有用的相关文章: