问题是关于强制 Win7 仅使用 TLS 1.2。(是的,我知道 Win7 不再有补丁,别介意。)
根本问题是 Ubisoft Connect 无法正常工作。我认为日志表明这与使用错误版本的 TLS 有关。日志:
Http status code is 404 for url https://wallet.ecom.ubi.com/...
Http status code is none for url https://channel-service.upc.ubi.com/...
(HTTP 状态代码为无?日志文件中的其他调用正常工作,这表明请求本身存在一些根本问题。例如 TLS 问题。但可能不是,所以我想能够检查 TLS 1.2 是否配置为唯一可用的协议 - 我怀疑不是。)
使用 SSLLabs,我查看了这些网站支持的 TLS 版本:
- https://www.ssllabs.com/ssltest/analyze.html?d=wallet.ecom.ubi.com
- https://www.ssllabs.com/ssltest/analyze.html?d=channel-service.upc.ubi.com
似乎不同之处在于wallet
支持TLS 1.0 和 1.1但不是1.3并且channel-service
不支持1.0 和 1.1,但确实支持1.3. (但我并不想使用 1.3。)
自从1.2似乎两者都支持,这就是我希望 Ubisoft Connect 使用的版本。所以我尝试将我的 Win7 配置为使用仅限 TLS 1.2, 和根本不使用 1.0/1.1。(遗憾的是,不支持 1.3。)
那么我该如何配置 Windows 7 仅使用 TLS 1.2和检查设置是否正常工作?
答案1
我终于搞明白了,下面是解释。也许对其他人也有用。
中的注册表更改SCHANNEL\Protocols
运行正常。可以使用 Internet Explorer 进行测试。Firefox 带有自己的 HTTPS 代码,因此无法使用它进行测试。
当您启用Enable=0
所有 HTTPS 加密协议时,Internet Explorer 中将不再支持任何 HTTPS 网站。Ubisoft Connect 也不行,您甚至无法登录。我停用了所有协议(SSL 2.0、SSL 3.0、TLS 1.0、TLS 1.1),但 TLS 1.2 除外。这样,TLS 1.2 将始终被使用。(Win7 不支持 TLS 1.3。)然后登录又可以正常工作了,因为处理该问题的服务器似乎不受下面解释的问题的影响。
问题是,https://channel-service.upc.ubi.com/不允许Windows 7 支持的任何密码套件。而 Windows 7 不允许您安装新的。Ubisoft 端点支持的列表相当小:https://www.ssllabs.com/ssltest/analyze.html?d=channel-service.upc.ubi.com&s=54.147.167.217
# TLS 1.2 (suites in server-preferred order)
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) ECDH x25519 (eq. 3072 bits RSA) FS 128
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) ECDH x25519 (eq. 3072 bits RSA) FS 256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8) ECDH x25519 (eq. 3072 bits RSA) FS 256
可以使用 Internet Explorer 访问 Github.com 和 Ubisoft 端点进行测试。Github 可以工作,但 Ubisoft 端点不行。两个站点都使用 TLS 1.2,但 Github 允许使用更多种类的密码套件:https://www.ssllabs.com/ssltest/analyze.html?d=github.com
# TLS 1.2 (suites in server-preferred order)
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b) ECDH x25519 (eq. 3072 bits RSA) FS 128
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) ECDH x25519 (eq. 3072 bits RSA) FS 128
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca9) ECDH x25519 (eq. 3072 bits RSA) FS 256P
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8) ECDH x25519 (eq. 3072 bits RSA) FS 256P
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c) ECDH x25519 (eq. 3072 bits RSA) FS 256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) ECDH x25519 (eq. 3072 bits RSA) FS 256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023) ECDH x25519 (eq. 3072 bits RSA) FS WEAK 128
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH x25519 (eq. 3072 bits RSA) FS WEAK 128
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024) ECDH x25519 (eq. 3072 bits RSA) FS WEAK 256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH x25519 (eq. 3072 bits RSA) FS WEAK 256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) ECDH x25519 (eq. 3072 bits RSA) FS WEAK 256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH x25519 (eq. 3072 bits RSA) FS WEAK 256
TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c) WEAK 128
TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d) WEAK 256
TLS_RSA_WITH_AES_128_CBC_SHA256 (0x3c) WEAK 128
TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d) WEAK 256
TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) WEAK 128
TLS_RSA_WITH_AES_256_CBC_SHA (0x35) WEAK 256
因此,我得出的结论是,育碧应该至少添加一个Windows 7 支持的密码套件添加到他们相关端点服务器的可接受列表中。这将是明智、好的解决方案。他们会这样做吗?... :|
我的解决方法是欺骗他们的端点服务器,方法如下:
- 为主机名创建一个自签名证书
channel-service.upc.ubi.com
,将其作为根证书安装在我的计算机上,并在我的网络中安装另一个(带有 Windows 10)证书。这是必要的,因为我们将假装是 Ubisoft 端点,但实际上我们不是。HTTPS 客户端仅检查证书链是否返回到某个根证书,正如我们刚刚添加的那样。 - 使用 ASP.NET Core 创建一个 Web 服务器应用程序,该应用程序仅接收连接,并将它们“管道化”到真正的 Ubisoft 端点(整个 HTTP 请求),然后管道化返回响应。这需要接受 HTTPS 连接并发回由我们的服务器加密的适当响应。(因此不仅仅是转发 TCP 流量)
- 在我的计算机上的 hosts 文件中添加一个条目,以重定向
channel-service.upc.ubi.com
到我网络中的另一台计算机。这是必要的,以便 Ubisoft Connect 可以与我们的网络服务器应用程序通信,而不是尝试向互联网发出请求。 - 在另一台 (Windows 10) 计算机上运行 Web 服务器应用程序。这是必需的,因为 1) 我们无法连接到修改了 hosts 文件的计算机上的实际 Ubisoft 端点,2) 我们无法使用它
HttpClient
连接到 Windows 7 计算机上的 Ubisoft 端点,因为那样会失败,就像 Internet Explorer 和 Ubisoft Connect 会失败一样。但它确实适用于 Windows 10。它也适用于 Java 程序。
现在,我能够为网络上所有运行 Windows 7 的机器提供“网关”?“代理”?以便与实际的 Ubisoft 端点进行通信。他们只需要根证书和主机文件修改。太好了,我现在可以玩多人游戏并再次使用聊天功能了。:)
我猜你也可以配置一个真正的代理?嗯,不确定。