为Service Bus命名空间配置最低 TLS 版本

Azure Service Bus命名空间允许客户端使用 TLS 1.2 及更高版本发送和接收数据。 若要强制实施更严格的安全措施,可以将Service Bus命名空间配置为要求客户端使用较新版本的 TLS。 如果Service Bus命名空间需要最低版本的 TLS,则使用旧版本发出的任何请求都失败。 有关此功能的概念信息,请参阅 为 Service Bus 命名空间的请求强制使用的最低传输层安全(TLS)版本

可以使用 Azure 门户或 Azure Resource Manager (ARM) 模板配置最低 TLS 版本。

在 Azure 门户中指定最低 TLS 版本

可以在 Advanced 选项卡上的 Azure 门户中创建Service Bus命名空间时指定最低 TLS 版本。

该屏幕截图显示用于在创建命名空间时设置最低 TLS 版本的页面。

此外,你还可以在“配置”页上为现有命名空间指定最低 TLS 版本。

该屏幕截图显示用于为现有命名空间设置最低 TLS 版本的页面。

使用Azure CLI

若要创建最低 TLS 版本设置为 1.3 的命名空间,请使用设置为 az servicebus namespace create--min-tls1.3命令。

az servicebus namespace create \
    --name mynamespace \
    --resource-group myresourcegroup \
    --min-tls 1.3

使用Azure PowerShell

若要创建最低 TLS 版本设置为 1.3 的命名空间,请使用设置为 New-AzServiceBusNamespace-MinimumTlsVersion1.3命令。

New-AzServiceBusNamespace `
    -ResourceGroup myresourcegroup `
    -Name mynamespace `
    -MinimumTlsVersion 1.3

创建模板以配置最低 TLS 版本

若要为Service Bus命名空间配置最低 TLS 版本,请将 MinimumTlsVersion 版本属性设置为 1.2 或 1.3。 使用 Azure Resource Manager 模板创建 Service Bus 命名空间时,MinimumTlsVersion 属性的默认版本为 1.2,除非您显式地将其设置为其他版本。

Note

如果使用低于 2022-01-01-preview 的 api 版本创建命名空间,则 MinimumTlsVersion 值为 1.0。 此值是早期版本中的默认值,保留为向后兼容性。

以下步骤介绍如何在 Azure 门户中创建模板。

  1. 在Azure门户中,选择创建资源
  2. 在“搜索市场”中,输入“自定义部署”,然后按 ENTER
  3. 选择 自定义部署(使用自定义模板部署)(预览版),选择“ 创建 ”,然后在 编辑器中选择“生成自己的模板”。
  4. 在模板编辑器中,粘贴以下模板以创建新的命名空间,并将最低 TLS 版本设置为 TLS 1.2。 请记得将尖括号中的占位符替换为你自己的值。
@description('Name of the Service Bus namespace')
param serviceBusNamespaceName string = 'sb${uniqueString(subscription().subscriptionId)}tls'

@description('Location for all resources.')
param location string = 'chinanorth'

@allowed([
  '1.2'
  '1.3'
])
@description('Minimum TLS version')
param minimumTlsVersion string = '1.2'

resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2024-01-01' = {
  name: serviceBusNamespaceName
  location: location
  sku: {
    name: 'Standard'
  }
  properties: {
    minimumTlsVersion: minimumTlsVersion
  }
}
  1. 保存模板。
  2. 指定资源组参数,然后选择 “查看 + 创建 ”按钮以部署模板,并创建配置了属性的 MinimumTlsVersion 命名空间。

Note

更新Service Bus命名空间的最低 TLS 版本后,可能需要长达 30 秒的时间才能完全传播更改。

配置最低 TLS 版本需要 api-version 2022-01-01-preview 或更高版本 Azure Service Bus 资源提供程序。

检查命名空间所需的最低 TLS 版本

若要检查Service Bus命名空间所需的最低 TLS 版本,请查询Azure Resource Manager API。 需要持有者令牌才能查询 API。 使用 ARMClient 检索令牌,并运行以下命令。

$env:ARMCLIENT_ENV="MOONCAKE"
.\ARMClient.exe login
.\ARMClient.exe token <your-subscription-id>

获取持有者令牌后,请使用以下脚本以及 REST 客户端 等工具来查询 API。

@token = Bearer <Token received from ARMClient>
@subscription = <your-subscription-id>
@resourceGroup = <your-resource-group-name>
@namespaceName = <your-namespace-name>

###
GET https://management.chinacloudapi.cn/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.ServiceBus/namespaces/{{namespaceName}}?api-version=2022-01-01-preview
content-type: application/json
Authorization: {{token}}

响应如下例所示,属性中设置了minimumTlsVersion

{
  "sku": {
    "name": "Premium",
    "tier": "Premium"
  },
  "id": "/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group-name>/providers/Microsoft.ServiceBus/namespaces/<your-namespace-name>",
  "name": "<your-namespace-name>",
  "type": "Microsoft.ServiceBus/Namespaces",
  "location": "China North",
  "tags": {},
  "properties": {
    "minimumTlsVersion": "1.2",
    "publicNetworkAccess": "Enabled",
    "disableLocalAuth": false,
    "zoneRedundant": false,
    "provisioningState": "Succeeded",
    "status": "Active"
  }
}

客户端使用的 TLS 版本

若要测试Service Bus命名空间所需的最低 TLS 版本会阻止使用较旧版本的调用,请将客户端配置为使用旧版 TLS。

Note

运行时自动使用客户端应用程序的主机计算机上可用的最新 TLS 版本。 不要重写此行为。 有关详细信息,请参阅 “选择 TLS 版本”。

当客户端使用不满足为命名空间配置的最低 TLS 版本的 TLS 版本访问Service Bus命名空间时,Azure Service Bus返回错误代码 401(未授权)和一条消息,指示不允许 TLS 版本对此Service Bus命名空间发出请求。

Note

为Service Bus命名空间配置最低 TLS 版本时,应用程序层将强制实施该最低版本。 尝试在协议层确定TLS支持的工具在直接针对Service Bus命名空间终结点运行时,除了返回所需的最低 TLS 版本外,还可能返回其他 TLS 版本。

后续步骤

有关详细信息,请参阅以下文档: