【问题标题】:Background Intelligent Transfer and TLS 1.2后台智能传输和 TLS 1.2
【发布时间】:2015-11-18 22:28:18
【问题描述】:

我有一个 .NET 应用程序,它使用后台智能传输服务将文件从客户端 Windows 7 X64 机器上传到 Windows 2012 R2 服务器。服务器为 TLS 1.2 被锁定以符合 PCI 3.1,即协议 SSL 2.0/3.0、TLS 1.0/1.1 已在注册表中使用 IISCrypto 和启用的 TLS 1.2 显式禁用。客户端上安装了服务器的受信任根 CA 证书。

应用程序使用 IBackgroundCopyManager 和 IBackgroundCopyJob COM 接口来创建作业并将其添加到队列中。在 Bits-Client 事件日志中,我在开始传输后看到以下警告(请注意,地址和文件名仅用于说明目的):

BITS stopped transferring the test.tmp transfer job that is associated with the https://server/folder/temp.tmp URL. The status code is 0x80072EFE

错误代码转换为:

ERROR_WINHTTP_CONNECTION_ERROR 12030 与服务器的连接已被重置或终止,或者遇到了不兼容的 SSL 协议。例如,WinHTTP 5.1 版不支持 SSL2,除非客户端专门启用它。

这是有道理的,正如我在 Wireshark 中看到的那样,BITS 请求仅尝试在与服务器的握手协议中使用 TLS 1.0,而这已被禁用。

因此,我的问题是:是否可以通过 Bits-Client 启用 TLS 1.2 的使用,如果可以,它是如何完成的?

COM 接口没有提供任何方法来设置所使用的协议,而且我在 BITS 服务的注册表设置中也看不到任何内容。这绝对不是证书问题,因为只要在服务器上启用 TLS 1.0,传输就会工作。

【问题讨论】:

    标签: ssl


    【解决方案1】:

    BITS 通过 WinHTTP 并使用默认的 WINHTTP_OPTION_SECURE_PROTOCOLS。问题是您的客户端运行的是 Windows 7。来自MSDN

    默认情况下,Windows 7 和 Windows 8 中仅启用 SSL3 和 TLS1。默认情况下,Windows 8.1 和 Windows 10 中仅启用 SSL3、TLS1.0、TLS1.1 和 TLS1.2

    有关如何在 Windows 7 计算机上启用 TLS 1.1 和 TLS 1.2 的说明,请参阅此支持文章:https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-a-default-secure-protocols-in

    【讨论】:

    • 只是为了补充 Diego 的答案,Microsoft Easy Tool 不会设置 SChannel 密钥,您可能需要在使用 Microsoft 文章中提到的更新和轻松修复工具后单独设置它们。 SCHANNEL 键: - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client ==> DWORD DisabledByDefault=0x00000000 - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols \TLS 1.2\Client ==> DWORD DisabledByDefault=0x00000000
    • 有没有办法以编程方式控制它?我在客户机器上遇到问题,不允许像这样更改注册表中的默认设置。
    猜你喜欢
    • 2011-01-13
    • 1970-01-01
    • 2010-09-28
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    相关资源
    最近更新 更多