TLS 1.3 on Windows Vista
-
I have a C# app in .NET framework 4.6.1 where it uses WebClient.DownloadString(url) to download content from a url that uses TLS 1.3 and it throws exception because app is intended for a use on Windows Vista that doesn't have TLS 1.3 .NET framework 4.8 can't be installed on Vista. How can I solve this problem so that app can work on Vista?
-
I have a C# app in .NET framework 4.6.1 where it uses WebClient.DownloadString(url) to download content from a url that uses TLS 1.3 and it throws exception because app is intended for a use on Windows Vista that doesn't have TLS 1.3 .NET framework 4.8 can't be installed on Vista. How can I solve this problem so that app can work on Vista?
I just browsed to namespace System.Net, using VS2010, and can see that WebClient.DownloadString(ur(i)) is a member of System [4.0.0.0] so I'd suggest going into the Project Properties and see if you can't switch the Target framework from the green one, 4.6.1, to ... say 2.0 or a little higher. Maybe 4.0. Nothing I've ever compiled with VS2010 gave me troubles on Vista but TLS did superceed SSL as I recall back around Windows 2000. Then again, I've actually has RDP running on Vista (though not attaching to Windows 2000) ... so I don't know what gives with RDP. Perhaps I'm confusing help here with some other help somewhere else :)
-
I have a C# app in .NET framework 4.6.1 where it uses WebClient.DownloadString(url) to download content from a url that uses TLS 1.3 and it throws exception because app is intended for a use on Windows Vista that doesn't have TLS 1.3 .NET framework 4.8 can't be installed on Vista. How can I solve this problem so that app can work on Vista?
Hi, It's not possible. The .NET framework utilizes Schannel for TLS 1.3[^] and Vista uses outdated libraries.
moxol wrote:
How can I solve this problem so that app can work on Vista?
The only thing that comes to mind is maybe using a C# wrapper around libcurl[^]. Best Wishes, -David Delaune
-
I have a C# app in .NET framework 4.6.1 where it uses WebClient.DownloadString(url) to download content from a url that uses TLS 1.3 and it throws exception because app is intended for a use on Windows Vista that doesn't have TLS 1.3 .NET framework 4.8 can't be installed on Vista. How can I solve this problem so that app can work on Vista?
You can get your app to use the OS-default protocols by setting a registry key: Transport Layer Security (TLS) best practices with the .NET Framework - .NET Framework | Microsoft Docs[^] Of course, that won't help if the OS doesn't support TLS 1.3 in the first place. As far as I can see, it's only supported in Windows 10 (build 1903 or later) and Windows 11, and in Windows Server 2019 and 2022. Vista doesn't even support TLS 1.1 without a patch! I guess the real question is, why are you still using an OS which has been out of mainstream support for over a decade, and out of extended support for over five years? :wtf:
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
-
You can get your app to use the OS-default protocols by setting a registry key: Transport Layer Security (TLS) best practices with the .NET Framework - .NET Framework | Microsoft Docs[^] Of course, that won't help if the OS doesn't support TLS 1.3 in the first place. As far as I can see, it's only supported in Windows 10 (build 1903 or later) and Windows 11, and in Windows Server 2019 and 2022. Vista doesn't even support TLS 1.1 without a patch! I guess the real question is, why are you still using an OS which has been out of mainstream support for over a decade, and out of extended support for over five years? :wtf:
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
-
I have a C# app in .NET framework 4.6.1 where it uses WebClient.DownloadString(url) to download content from a url that uses TLS 1.3 and it throws exception because app is intended for a use on Windows Vista that doesn't have TLS 1.3 .NET framework 4.8 can't be installed on Vista. How can I solve this problem so that app can work on Vista?
Vista is on customer's computer, I can't change that. I managed to install TLS 1.1 and TLS 1.2 using this guide Enable TLS 1.1/1.2 on Windows Vista | JohnHaller.com[^] but no TLS 1.3. I found a method to install .NET framework 4.8 on Vista, but not yet tried. Then it would be possible to use in app TLS 1.3. [Tutorial] How to install .Net Framework 4.8 on Windows Vista - Windows Vista - MSFN[^] If that doesn't work, only remaining option is to use third-party library like libcurl as suggested.
-
Vista is on customer's computer, I can't change that. I managed to install TLS 1.1 and TLS 1.2 using this guide Enable TLS 1.1/1.2 on Windows Vista | JohnHaller.com[^] but no TLS 1.3. I found a method to install .NET framework 4.8 on Vista, but not yet tried. Then it would be possible to use in app TLS 1.3. [Tutorial] How to install .Net Framework 4.8 on Windows Vista - Windows Vista - MSFN[^] If that doesn't work, only remaining option is to use third-party library like libcurl as suggested.
I would probably try to explain customer that the problem is not in my application but in operating system. If I was creating a protocol that does not work on an operating system, I would have explored further to fix it. But here it appears you are creating an application which has some pre-requisites which are outside or your control and must be provided by consumer of your application. I would stay away from try to *fix* this as soon someone would show up with a XP based computer and now I need to support that as well.
"It is easy to decipher extraterrestrial signals after deciphering Javascript and VB6 themselves.", ISanti[^]