ssl - 后台智能传输和 TLS 1.2

标签 ssl

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

应用程序使用 IBackgroundCopyManager 和 IBackgroundCopyJob COM 接口(interface)创建作业并将其添加到队列中。在 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 协议(protocol)。例如,WinHTTP 5.1 版不支持 SSL2,除非客户端特别启用它。

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

因此,我的问题是:Bits-Client 是否可以启用 TLS 1.2,如果可以,如何实现?

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

最佳答案

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

By default only SSL3 and TLS1 are enabled in Windows 7 and Windows 8. By default only SSL3, TLS1.0, TLS1.1, and TLS1.2 are enabled in Windows 8.1 and Windows 10

有关如何在 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

关于ssl - 后台智能传输和 TLS 1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32200253/

相关文章:

mysql - 如何使用 MySql 5.7 作为配置单元元存储,因为它需要 SSL 参数?

node.js - 通过代理的 TLS 连接

apache - 在 apache 2.2.22 中启用 TLSv1.2

android - 自动将 SSL 证书安装到 Android 设备

ssl - 关于代理中间人攻击

php - 使用 Stunnel 通过 Web 服务器向 MySQL 服务器提交表单数据?

c# - 新的 SSL 证书破坏了应用程序使用 WSDL 的能力

windows - Ansible:检测证书是否已安装在证书存储中的最佳方法

ssl - Ejabberd 配置问题

javascript - 尝试在 Flask 应用程序内提供安全脚本