环境
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