{"id":537,"date":"2026-08-03T23:12:55","date_gmt":"2026-08-03T23:12:55","guid":{"rendered":"https:\/\/windows-vps.org\/blog\/?p=537"},"modified":"2026-08-03T23:12:55","modified_gmt":"2026-08-03T23:12:55","slug":"enable-tls-12-tls-13-system-wide-windows-vps","status":"publish","type":"post","link":"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/","title":{"rendered":"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification"},"content":{"rendered":"<p class=\"wp-block-paragraph\">TLS version support on Windows is decided at the operating-system level by Schannel, the built-in security provider. IIS, WinRM, RDP\u2019s network layer, and every .NET application on the box inherit the same protocol settings \u2014 which is why a single registry change can modernize TLS for the whole VPS at once. TLS 1.0 and 1.1 have been deprecated for years, and modern browsers, payment processors, and security scanners expect at least TLS 1.2, preferably TLS 1.3. This guide shows how to enable TLS 1.2 and 1.3 system-wide, disable the legacy protocols, and verify the result from outside.<\/p>\n<p class=\"wp-block-paragraph\">The procedure is identical on every edition of Windows Server, but TLS 1.3 requires Windows Server 2022 or newer. If your provider\u2019s image is older, you may need to reinstall or pick a host with current templates \u2014 <a href=\"https:\/\/windows-vps.org\/#providers\">our comparison table of Windows VPS providers<\/a> shows which vendors offer Server 2022 and 2025 images out of the box.<\/p>\n<h2 class=\"wp-block-heading\">Step 1: Check which protocols are currently enabled<\/h2>\n<p class=\"wp-block-paragraph\">Open an elevated PowerShell and list the protocol keys under Schannel:<\/p>\n<pre class=\"wp-block-code\"><code>Get-ChildItem \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Protocols\" |\n  Select-Object -ExpandProperty PSChildName<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Protocols listed here are explicitly configured; protocols missing from the list fall back to Windows defaults. A quick check of what .NET will use is:<\/p>\n<pre class=\"wp-block-code\"><code>[Net.ServicePointManager]::SecurityProtocol<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Step 2: Enable TLS 1.2 and TLS 1.3<\/h2>\n<pre class=\"wp-block-code\"><code>$base = \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\\SecurityProviders\\SCHANNEL\\Protocols\"\nforeach ($proto in \"TLS 1.2\", \"TLS 1.3\") {\n  foreach ($side in \"Server\", \"Client\") {\n    New-Item \"$base\\$proto\\$side\" -Force | Out-Null\n    New-ItemProperty \"$base\\$proto\\$side\" -Name Enabled -Value 1 -PropertyType DWord -Force | Out-Null\n    New-ItemProperty \"$base\\$proto\\$side\" -Name DisabledByDefault -Value 0 -PropertyType DWord -Force | Out-Null\n  }\n}<\/code><\/pre>\n<p class=\"wp-block-paragraph\">On Windows Server 2022 and later, the TLS 1.3 keys are honored after a reboot. On Server 2019, TLS 1.3 is not available \u2014 the script creates the keys and the system ignores them, so configure TLS 1.2 only there.<\/p>\n<p class=\"wp-block-paragraph\">If you prefer a GUI over the registry, the free IIS Crypto tool (from Nartac Software) exposes the same Schannel keys with checkboxes and applies them for you. It is useful as a second pair of eyes: it lists every protocol and cipher suite on one screen, and its Best Practices button preselects exactly the settings above. Everything it changes lives in the same HKLM path, so you can still verify with Get-ItemProperty afterward.<\/p>\n<h2 class=\"wp-block-heading\">Step 3: Disable SSL 3.0, TLS 1.0, and TLS 1.1<\/h2>\n<pre class=\"wp-block-code\"><code>foreach ($proto in \"SSL 2.0\", \"SSL 3.0\", \"TLS 1.0\", \"TLS 1.1\") {\n  foreach ($side in \"Server\", \"Client\") {\n    New-Item \"$base\\$proto\\$side\" -Force | Out-Null\n    New-ItemProperty \"$base\\$proto\\$side\" -Name Enabled -Value 0 -PropertyType DWord -Force | Out-Null\n    New-ItemProperty \"$base\\$proto\\$side\" -Name DisabledByDefault -Value 1 -PropertyType DWord -Force | Out-Null\n  }\n}<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Warning: run this only when you are sure your clients support TLS 1.2 or better. Old RDP clients on unpatched Windows 7 and legacy browsers will no longer connect \u2014 for a VPS that is almost always what you want, but verify your remote access path before you reboot.<\/p>\n<h2 class=\"wp-block-heading\">Step 4: Force .NET to use strong cryptography<\/h2>\n<p class=\"wp-block-paragraph\">Independent of Schannel, .NET Framework 4.x only respects the OS protocol settings if you set SchUseStrongCrypto. Without it, some .NET apps happily negotiate TLS 1.0. Set it for both the 64-bit and 32-bit (WOW64) registry views:<\/p>\n<pre class=\"wp-block-code\"><code>$dotnet = \"HKLM:\\SOFTWARE\\Microsoft\\.NETFramework\\v4.0.30319\"\nNew-ItemProperty $dotnet -Name SchUseStrongCrypto -Value 1 -PropertyType DWord -Force | Out-Null\nNew-ItemProperty \"HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\.NETFramework\\v4.0.30319\" `\n  -Name SchUseStrongCrypto -Value 1 -PropertyType DWord -Force | Out-Null<\/code><\/pre>\n<p class=\"wp-block-paragraph\">For .NET Core and .NET 5+, the runtime already prefers the OS protocols, so no registry tweak is needed.<\/p>\n<h2 class=\"wp-block-heading\">Step 5: Reboot and verify from outside<\/h2>\n<p class=\"wp-block-paragraph\">All Schannel changes require a reboot to take effect. After the server comes back, verify each protocol from a machine with openssl (or run the Qualys SSL Labs test against your public IP):<\/p>\n<pre class=\"wp-block-code\"><code>openssl s_client -connect your-vps-ip:443 -tls1_3 -servername site.example.com &lt; \/dev\/null\nopenssl s_client -connect your-vps-ip:443 -tls1_2 -servername site.example.com &lt; \/dev\/null\nopenssl s_client -connect your-vps-ip:443 -tls1_1 -servername site.example.com &lt; \/dev\/null<\/code><\/pre>\n<p class=\"wp-block-paragraph\">The first two commands should print a certificate chain; the TLS 1.1 attempt should fail with a handshake error. On the server itself, confirm the registry values and the running service:<\/p>\n<pre class=\"wp-block-code\"><code>Get-ItemProperty \"$base\\TLS 1.2\\Server\" | Select-Object Enabled, DisabledByDefault\nGet-ItemProperty \"$base\\TLS 1.3\\Server\" | Select-Object Enabled, DisabledByDefault<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Also re-test RDP and WinRM after the reboot \u2014 if your management client is modern, both should connect over TLS 1.2+ without any extra work.<\/p>\n<h2 class=\"wp-block-heading\">A note on IIS sites<\/h2>\n<p class=\"wp-block-paragraph\">Because IIS uses Schannel, the moment the registry is in place every site on the server inherits the new protocol policy \u2014 there is nothing to configure per site. Certificates are a separate topic, but if your IIS bindings are already set up, the TLS version upgrade is invisible to visitors except for a better security rating.<\/p>\n<h2 class=\"wp-block-heading\">Wrap up<\/h2>\n<p class=\"wp-block-paragraph\">System-wide TLS 1.2\/1.3 is one of those rare changes that improves security, compatibility with modern clients, and your site\u2019s reputation with scanners in a single reboot. For a host that ships current Windows Server images so the TLS 1.3 keys actually work, <a href=\"https:\/\/windows-vps.org\/#providers\">see the full specs and pricing<\/a> in our Windows VPS provider comparison.<\/p>\n<p class=\"wp-block-paragraph\">TLS 1.3 needs a modern OS, so choose a provider that deploys Server 2022 or 2025. <a href=\"https:\/\/vultr.com\/?ref=9804308-9J\" rel=\"noreferrer noopener sponsored\" target=\"_blank\">Vultr&#8217;s Windows VPS instances<\/a> are built from up-to-date templates, letting you enable TLS 1.3 and keep it enabled across rebuilds.<\/p>","protected":false},"excerpt":{"rendered":"<p>TLS version support on Windows is decided at the operating-system level by Schannel, the built-in security provider. IIS, WinRM, RDP\u2019s network layer, and every .NET application on the box inherit the same protocol settings \u2014 which is why a single registry change can modernize TLS for the whole VPS at once. TLS 1.0 and 1.1 &#8230; <a title=\"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification\" class=\"read-more\" href=\"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/\" aria-label=\"Read more about Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-537","post","type-post","status-publish","format-standard","hentry","category-tutorials-guides"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification - Windows VPS Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification\" \/>\n<meta property=\"og:description\" content=\"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification\" \/>\n<meta property=\"og:url\" content=\"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/\" \/>\n<meta property=\"og:site_name\" content=\"Windows VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-03T23:12:55+00:00\" \/>\n<meta name=\"author\" content=\"windows-vps\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"windows-vps\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/\",\"url\":\"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/\",\"name\":\"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification - Windows VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\"},\"datePublished\":\"2026-08-03T23:12:55+00:00\",\"author\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\"},\"breadcrumb\":{\"@id\":\"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/windows-vps.org\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#website\",\"url\":\"https:\/\/windows-vps.org\/blog\/\",\"name\":\"Windows VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/windows-vps.org\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58\",\"name\":\"windows-vps\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g\",\"caption\":\"windows-vps\"},\"sameAs\":[\"https:\/\/windows-vps.org\/blog\"],\"url\":\"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification - Windows VPS Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/","og_locale":"en_US","og_type":"article","og_title":"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification","og_description":"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification","og_url":"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/","og_site_name":"Windows VPS Blog","article_published_time":"2026-08-03T23:12:55+00:00","author":"windows-vps","twitter_card":"summary_large_image","twitter_misc":{"Written by":"windows-vps","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/","url":"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/","name":"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification - Windows VPS Blog","isPartOf":{"@id":"https:\/\/windows-vps.org\/blog\/#website"},"datePublished":"2026-08-03T23:12:55+00:00","author":{"@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58"},"breadcrumb":{"@id":"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/windows-vps.org\/blog\/enable-tls-12-tls-13-system-wide-windows-vps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/windows-vps.org\/blog\/"},{"@type":"ListItem","position":2,"name":"Enable TLS 1.2 and TLS 1.3 System-Wide on a Windows VPS: Schannel Registry Settings and Verification"}]},{"@type":"WebSite","@id":"https:\/\/windows-vps.org\/blog\/#website","url":"https:\/\/windows-vps.org\/blog\/","name":"Windows VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/windows-vps.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/44caceed916d0db318aa08d5623a7a58","name":"windows-vps","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/windows-vps.org\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3f2573db5afcd1a6ab9abcc5d48fc8e42584bc87ab9d98cc156e5b2097766dd9?s=96&d=mm&r=g","caption":"windows-vps"},"sameAs":["https:\/\/windows-vps.org\/blog"],"url":"https:\/\/windows-vps.org\/blog\/author\/myxiechengxuan\/"}]}},"_links":{"self":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/comments?post=537"}],"version-history":[{"count":1,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/537\/revisions"}],"predecessor-version":[{"id":538,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/posts\/537\/revisions\/538"}],"wp:attachment":[{"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/media?parent=537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/categories?post=537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/windows-vps.org\/blog\/wp-json\/wp\/v2\/tags?post=537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}