我们使用 Azure DevOps webhooks 在某些工作项发生更改时通知内部应用程序。这已经工作了一年多,但最近它停止工作,在 webhook 历史记录中显示以下错误:
There was an error sending the request, so there was no response.
Error(s):
An error occurred while sending the request.
The underlying connection was closed: An unexpected error occurred on a send.
Authentication failed because the remote party has closed the transport stream.
Webhook 消息应该由 IIS Web 服务器上运行的应用程序接收。
但该请求甚至没有显示在 IIS 日志中。可能出了什么问题?
事件:工作项已更新
过滤器:[任意]
操作:通过 HTTP 发布
URL:[出于安全原因删除]
基本身份验证:是(由于显而易见的原因,此处未列出用户名/密码)
要发送的资源详细信息:全部
要发送的消息:无
要发送的详细消息:无
运行内部应用程序的服务器最近从 Windows Server 2012R2 更新到 Windows Server 2019。
我的猜测是,这更改了支持的 TLS 版本/密码套件,因此无法找到匹配的套件。
Webhooks 支持的密码套件是否记录在某处?
经过大量调查,确实是由于 DevOps Webhook 客户端和应用程序之间支持的密码套件不匹配造成的。
我使用Wireshark来检查webhook请求的流量。 DevOps Webhook 客户端支持以下 TLS 密码:
这些都没有在 IIS 服务器上启用。我使用了一个名为“IIS Crypto”的工具来检查服务器上支持的密码。 其中一些已启用,但带有 _Pxxx 后缀。谷歌透露,这是以前使用此表示法的 Windows 版本的遗留物,但在 Windows Server 2019 上不再使用。这导致这些密码实际上并未启用。 删除后缀后,Webhook 再次工作。