ssl Windows XP Embedded PosReady 2009支持TLS1.2

pieyvz9o  于 5个月前  发布在  Windows
关注(0)|答案(3)|浏览(74)

默认情况下,在Windows Embedded PosReady 2009上未启用对TLS1.2的支持。
然而,微软发布了KB4019276(https://support.microsoft.com/en-us/help/4019276/update-to-add-support-for-tls-1-1-and-tls-1-2-in-windows),增加了这种支持。
我已经将注册表DWORD DisabledByDefault添加到文章中定义的以下键中。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server

字符串
我已经重新启动设备后,安装知识库和注册表的变化,但它仍然不为我工作。下面是TLS1.2代码IM使用测试的变化。
唯一的例外是

System.NotSupportedException: The requested security protocol is not supported.
   at System.Net.ServicePointManager.set_SecurityProtocol(SecurityProtocolType value)


代码是用.net 3.5编译的,3.5是该设备支持的最高.net框架。

Console.WriteLine("Press Enter to send TLS1.2 to google.com");
Console.ReadLine();

System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;   // Sets TLS1.2. This will only work if the OS supports it. 

string url = "https://www.google.com";
var req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";

var resp = req.GetResponse();
var outStream = resp.GetResponseStream();
string output = "";
using (StreamReader rdr = new StreamReader(outStream))
{
    output = rdr.ReadToEnd();
}
Console.WriteLine(output);
Console.ReadLine();

s5a0g9ez

s5a0g9ez1#

微软不支持TLS1.2的.NET版本低于4.5,不能安装在嵌入式POS就绪2009。非常蹩脚的解决方案,他们提供了!

dsf9zpds

dsf9zpds2#

我也遇到过同样的情况。但是我现在可以在POSready 2009上使用TLS1.2和.NET Framework 3.5应用程序了。
我的机器也安装了.NET Framework 4.0。然后应用所有“Windows Update”。(如果某些更新因证书错误而失败,请在“安装或删除Windows组件”中检查[更新根证书])
在安装KB 4019276之后,我尝试了以下对regstory的更改:

REG DELETE "HKLM\SOFTWARE\Microsoft\Internet Explorer\AdvancedOptions\CRYPTO\TLS1.2" /v OSVersion /f
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client" /v Enabled /t REG_DWORD /d 0
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client" /v Enabled /t REG_DWORD /d 0
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" /v Enabled /t REG_DWORD /d 0
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" /v Enabled /t REG_DWORD /d 0

字符串
然后,您可以在Internet Option的高级选项卡中找到[使用TLS 1.2]。打开[使用TLS 1.2]并关闭其他[使用TLS/SSL x.x]。

q5lcpyga

q5lcpyga3#

实际上,Quinoshita是正确的。在XP SP3 POSReady2009中,在IE的选项中打开TLS 1.2似乎可以使.Net和旧语言使用MSXML.XMLHTTP和MSXML2.ServerXMLHTTP调用(例如)来处理TLS 1.2。我正在运行VB6应用程序,并且能够使用以下代码确认TLS 1.2连接:

Sub Main()
         Dim objhttp As New MSXML2.ServerXMLHTTP60
         'or unrem this to test XMLHTTP
         'Dim objhttp As New MSXML2.XMLHTTP60
         objhttp.open "GET", "https://howsmyssl.com/a/check", False
         'next line not required, just 
         objhttp.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0"
         objhttp.setRequestHeader "Content-type", "text/html"
         objhttp.send
         Debug.Print objhttp.responseText
         Set objhttp = Nothing
    End Sub

字符串
只要响应包含"tls_version":"TLS 1.2",那么它就可以正常工作。
我对他的帖子中的REG 1.2命令持怀疑态度,但这对我来说很有用,并在控制面板的互联网选项中打开了TLS 1.2选项复选框。我已经手动做了一些其他的更改。

相关问题