默认情况下,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我已经重新启动了设备后,安装的KB和注册表的变化,但它仍然不能为我工作。下面是我用来测试这些变化的TLS1.2代码。
例外情况是
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();发布于 2018-02-16 23:07:36
微软不支持.NET版本低于4.5的TLS1.2,这些版本不能安装在嵌入式POS 2009上。他们提供了非常糟糕的解决方案!
发布于 2018-11-29 11:30:32
我也遇到过同样的情况。但是我现在可以在带有.NET Framework3.5应用程序的POSready2009上使用TLS1.2。
我的机器也安装了.NET Framework4.0。然后应用所有的"Windows Update“。(如果某些更新因证书错误而失败,请选中“安装或删除Windows组件”中的“更新根证书”)
在安装了KB4019276之后,我尝试了对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选项的高级选项卡中找到使用TLS 1.2。启用Use TLS 1.2并禁用other Use TLS/SSL x.x。
发布于 2019-10-01 10:59:09
事实上,Quinoshita是正确的。在XP SP3 POSReady2009中,在IE的选项中打开TLS1.2似乎使.Net和使用MSXML.XMLHTTP和MSXML2.ServerXMLHTTP调用(例如)的旧语言能够在TLS1.2上工作。我正在运行VB6应用程序,并且能够使用以下代码确认TLS1.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 DELETE命令持怀疑态度,但这为我做了一些事情,并在控制面板的Internet选项中揭开了TLS 1.2选项复选框的面纱。我已经手动进行了他的其他一些更改。
https://stackoverflow.com/questions/47834564
复制相似问题