环境

Windows Server 2012 R2
Windows Server 2012

问题

在新安装的 Windows Server2012 R2 服务器上配置 Windwos Server 更新服务 WSUS 服务时,报错“WebException: 基础连接已经关闭: 发送时发生错误。System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。”

解决

建议先安装补丁,如若不行,再配置 .Net Framework 强加密。

1 安装补丁

下载不定时,请注意补丁所对应的系统。
在运行 Windows Server 2012 的 WSUS 服务器中,安装补丁 KB4022721
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4022721

在运行 Windows Server 2012 R2 的 WSUS 服务器中,安装补丁 KB4022720
https://www.catalog.update.microsoft.com/Search.aspx?q=KB4022720

安装补丁后,进行重启。

2 设置 .Net Framework 强加密

** 以下两项看上去没有冲突,个人都进行了设置。
对于在 32 位操作系统上运行的 32 位应用程序和在 64 位操作系统上运行的 64 位应用程序,新建或更新以下子项值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
      "SystemDefaultTlsVersions" = dword:00000001
      "SchUseStrongCrypto" = dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
      "SystemDefaultTlsVersions" = dword:00000001
      "SchUseStrongCrypto" = dword:00000001

对于在 64 位操作系统上运行的 32 位应用程序,请新建或更新以下子项值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
      "SystemDefaultTlsVersions" = dword:00000001
      "SchUseStrongCrypto" = dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
      "SystemDefaultTlsVersions" = dword:00000001
      "SchUseStrongCrypto" = dword:00000001

设置注册表后,进行重启。

原因

微软的 Windows 更新服务器,目前仅支持 TLS 1.2 协议。
在早期的 Windows Server 2012 中默认不支持 TLS 1.2。

错误信息

WebException: 基础连接已经关闭: 发送时发生错误。 ---> System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。
在 System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
   在 System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
   在 Microsoft.UpdateServices.ServerSync.ServerSyncCompressionProxy.GetWebResponse(WebRequest webRequest)
   在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   在 Microsoft.UpdateServices.ServerSyncWebServices.ServerSync.ServerSyncProxy.GetAuthConfig()
   在 Microsoft.UpdateServices.ServerSync.ServerSyncLib.InternetGetServerAuthConfig(ServerSyncProxy proxy, WebServiceCommunicationHelper webServiceHelper)
   在 Microsoft.UpdateServices.ServerSync.ServerSyncLib.Authenticate(AuthorizationManager authorizationManager, Boolean checkExpiration, ServerSyncProxy proxy, Cookie cookie, WebServiceCommunicationHelper webServiceHelper)
   在 Microsoft.UpdateServices.ServerSync.CatalogSyncAgentCore.SyncConfigUpdatesFromUSS()
   在 Microsoft.UpdateServices.ServerSync.Cat

参考

docs.microsoft.com/en-us/mem/configmgr/core/plan-design/security/enable-tls-1-2-server#configure-for-strong-cryptography

最后修改:2022 年 05 月 05 日 05 : 07 PM
如果觉得文章帮助了您,您可以随意赞赏。