Azure Function调用APIM报Authentication failed远程关闭传输流错误
故障排查与修复方案
根因定位
该报错为TLS握手阶段被远端主动断开,你已确认客户端使用TLS1.2协议,DEV/QA环境正常、生产异常,核心原因为生产环境APIM实例配置的TLS密码套件列表,与生产Azure Function运行环境支持的密码套件列表无交集。
排查步骤
- 校验生产APIM的密码套件配置
进入Azure门户APIM实例的「安全」-「协议设置」页面,对比生产、DEV、QA三个环境的密码套件列表:
常见差异为生产环境为满足合规要求,会自定义仅支持高安全等级的新型密码套件,而生产Function所在的运行环境不支持这些套件,导致握手无匹配套件被主动断开。 - 校验生产Azure Function的运行环境配置
进入Function App的「配置」-「常规设置」页面,确认如下配置和DEV/QA环境完全一致:- .NET 运行时版本
- 操作系统版本(Windows Server 2019/2022不同版本支持的密码套件列表存在差异)
- 站点级TLS最低版本设置为1.2
修复方案
- 临时验证:在生产APIM的密码套件列表中,优先加入你贴出的生产Function明确支持的套件(例如
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384),测试请求是否恢复正常,确认根因。 - 永久修复:二选一即可:
- 调整生产APIM的密码套件列表,加入Function运行环境支持的合规密码套件
- 升级生产Function所在的App Service计划操作系统版本,使其支持APIM要求的所有密码套件
注意事项
ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;代码必须放在应用启动的最前位置,早于所有HttpClient实例的初始化逻辑,否则已创建的客户端不会生效。
内容的提问来源于stack exchange,提问作者Sadiq Khoja
相关产品推荐
相关产品推荐

