HTTPS 出站请求时间在实例 运行 基于 IdentityServer 4 的产品上 14-21 天后增加到 5 分钟
HTTPS outbound requests time increases to 5 min after 14-21 days on an instance running a product based on IdentityServer 4
运行 ASP.Net AWS 集群上基于 IdentityServer 4 的核心应用程序,
14-21 天后,所有传出 HTTPS 请求需要 5 分钟或更长时间才能完成。
经过调查发现 WinHTTP Web Proxy Auto-Discovery Service
死于以下错误:The endpoint mapper database entry could not be created.
不确定这是问题还是 [=69= 中其他问题的副作用].
环境:
- 带有自动缩放组的 ELB 后面有两个实例,两个实例都出现问题
- Windows 服务器 2019
备注:
- 这是一个自定义 AMI,但与未遇到此情况的实例的唯一区别是产品是 运行。
- 发生在基于 .Net core 2.2 和 3.1 的应用程序版本上
- 发生在基于 IdentityServer4 v2 和 v3 的两个版本上
- 应用程序是独立部署的
- 应用程序使用 Kestrel,前面没有反向代理
尝试过:
- 已启用 schannel:跟踪时设置的 schannel 日志中没有错误
- 任何 EventViewer 日志中都没有其他值得注意的错误
- 重启实例解决问题
- 当 运行 curl.exe -v 到计算机上的 HTTPS 站点时,请求卡在
schannel: checking server certificate revocation
- 实例上的时钟正常
- 重新启动应用进程无法解决问题
- 在使用
WinHTTP Web Proxy Auto-Discovery Service
服务的代码中禁用 HTTPClient
仍然会中断服务。
我在 Server 2019 的基本 AWS Lightsail 实例上看到了这个完全相同的问题。我只是将 IIS 用作带有 URL 重写模块的反向代理。
以下是关于我的 environment/scenario 的一些详细信息,以防它有助于缩小一些共同因素的范围。
我在这个盒子上有零个 .Net 应用程序 运行ning,它只是一个反向代理。
我在 IIS 中设置了 2 个 Web 应用程序和 2 个网站,每个都是不同后端的反向代理 API。
反向代理上 IIS 中的网站使用与后端 API 相同的 CA 颁发的通配符证书。
后端 API 也托管在 IIS (Server 2012 R2) 中。
后端 API 的 运行 在符合 PCI 的环境中,因此 IIS Crypto 已用于加强加密 protocols/algo。我还没有在反向代理上使用 IIS Crypto,所以当我输入这个时,我开始怀疑是否有 SSL 方面的问题。
对于那些 运行 感兴趣的人。
这个问题的根源是WinHTTP autoproxy (wpad) service which is used to autoconfigure proxy settings, WinHTTP 5.1 implements the Web Proxy Auto-Discovery (WPAD) protocol also known as autoproxy, and it must support DHCP。现在这就是问题所在,AWS DHCP 不支持 DHCP 选项 252(WPAD 使用),这反过来又导致了问题。
解决方案是禁用 WinHTTP 服务,因为它在 Windows 中默认打开。
运行 ASP.Net AWS 集群上基于 IdentityServer 4 的核心应用程序, 14-21 天后,所有传出 HTTPS 请求需要 5 分钟或更长时间才能完成。
经过调查发现 WinHTTP Web Proxy Auto-Discovery Service
死于以下错误:The endpoint mapper database entry could not be created.
不确定这是问题还是 [=69= 中其他问题的副作用].
环境:
- 带有自动缩放组的 ELB 后面有两个实例,两个实例都出现问题
- Windows 服务器 2019
备注:
- 这是一个自定义 AMI,但与未遇到此情况的实例的唯一区别是产品是 运行。
- 发生在基于 .Net core 2.2 和 3.1 的应用程序版本上
- 发生在基于 IdentityServer4 v2 和 v3 的两个版本上
- 应用程序是独立部署的
- 应用程序使用 Kestrel,前面没有反向代理
尝试过:
- 已启用 schannel:跟踪时设置的 schannel 日志中没有错误
- 任何 EventViewer 日志中都没有其他值得注意的错误
- 重启实例解决问题
- 当 运行 curl.exe -v 到计算机上的 HTTPS 站点时,请求卡在
schannel: checking server certificate revocation
- 实例上的时钟正常
- 重新启动应用进程无法解决问题
- 在使用
WinHTTP Web Proxy Auto-Discovery Service
服务的代码中禁用HTTPClient
仍然会中断服务。
我在 Server 2019 的基本 AWS Lightsail 实例上看到了这个完全相同的问题。我只是将 IIS 用作带有 URL 重写模块的反向代理。
以下是关于我的 environment/scenario 的一些详细信息,以防它有助于缩小一些共同因素的范围。
我在这个盒子上有零个 .Net 应用程序 运行ning,它只是一个反向代理。
我在 IIS 中设置了 2 个 Web 应用程序和 2 个网站,每个都是不同后端的反向代理 API。
反向代理上 IIS 中的网站使用与后端 API 相同的 CA 颁发的通配符证书。
后端 API 也托管在 IIS (Server 2012 R2) 中。
后端 API 的 运行 在符合 PCI 的环境中,因此 IIS Crypto 已用于加强加密 protocols/algo。我还没有在反向代理上使用 IIS Crypto,所以当我输入这个时,我开始怀疑是否有 SSL 方面的问题。
对于那些 运行 感兴趣的人。
这个问题的根源是WinHTTP autoproxy (wpad) service which is used to autoconfigure proxy settings, WinHTTP 5.1 implements the Web Proxy Auto-Discovery (WPAD) protocol also known as autoproxy, and it must support DHCP。现在这就是问题所在,AWS DHCP 不支持 DHCP 选项 252(WPAD 使用),这反过来又导致了问题。
解决方案是禁用 WinHTTP 服务,因为它在 Windows 中默认打开。