ค้นหาเว็บไซต์

วิธีเปิดใช้งาน TLS 1.2 บน Windows


ในบทความนี้ เราจะดูวิธีเปิดใช้งานโปรโตคอล Transport Layer Security (TLS 1.2) ใน Windows รุ่นต่างๆ รวมถึงกรณีสำหรับแอปพลิเคชัน .Net และ WinHTTP TLS 1.0 และ TLS 1.1 เป็นเวอร์ชันโปรโตคอลที่เลิกใช้แล้ว หากคุณย้ายบริการทั้งหมดของคุณเป็น TLS 1.2 หรือ TLS 1.3 คุณอาจปิดใช้งานการสนับสนุนสำหรับ TLS เวอร์ชันดั้งเดิมบนเซิร์ฟเวอร์และไคลเอ็นต์ Windows ของคุณ (วิธีปิดใช้งาน TLS 1.0 และ TLS 1.1 โดยใช้ GPO) อย่างไรก็ตาม ก่อนที่จะดำเนินการ ตรวจสอบให้แน่ใจว่าไคลเอนต์ทั้งหมดของคุณรองรับ TLS 1.2

ในเวอร์ชัน Windows สมัยใหม่ (Windows 11/10/8.1 หรือ Windows Server 2022/2019/2016/2012R2) TLS 1.2 จะถูกเปิดใช้งานตามค่าเริ่มต้น ใน Windows รุ่นก่อนหน้า (Windows 7, Windows Server 2008R2/2012) คุณจะต้องกำหนดการตั้งค่าบางอย่างก่อนจึงจะสามารถเปิดใช้งาน TLS 1.2 ได้

Windows XP และ Vista ไม่รองรับ TLS 1.2

ตัวอย่างเช่น ในการเปิดใช้งาน TLS 1.2 ใน Windows 7 และ Windows Server 2008 R2:

  1. ตรวจสอบให้แน่ใจว่าได้ติดตั้ง Windows 7 Service Pack 1 แล้ว

  2. ดาวน์โหลดและติดตั้งการอัปเดต MSU KB3140245 ด้วยตนเองจาก Microsoft Update Catalog (https://www.catalog.update.microsoft.com/search.aspx?q=kb3140245);

  3. จากนั้นดาวน์โหลดและติดตั้ง MicrosoftEasyFix51044.msi (โปรแกรมแก้ไขเพิ่มตัวเลือกรีจิสทรีอนุญาตให้เปิดใช้งานการสนับสนุน TLS 1.2 บน Windows 7/2008R2/2012)

    หากไม่มีการอัปเดตเหล่านี้ Outlook บน Windows 7 จะไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์อีเมลสมัยใหม่โดยมีข้อผิดพลาด: 0x800CCC1A - เซิร์ฟเวอร์ของคุณไม่รองรับประเภทการเข้ารหัสการเชื่อมต่อที่คุณระบุ นอกจากนี้ หากคุณเปิดบางเว็บไซต์ คุณอาจเห็นข้อผิดพลาด SSL ไซต์นี้ไม่สามารถให้การเชื่อมต่อที่ปลอดภัยได้

  4. รีสตาร์ทเครื่องคอมพิวเตอร์ของคุณ

ตัวเลือกรีจิสทรีเหล่านี้อธิบายไว้ในบทความ อัปเดตเพื่อเปิดใช้งาน TLS 1.1 และ TLS 1.2 เป็นโปรโตคอลความปลอดภัยเริ่มต้นใน WinHTTP ใน Windows (https://support.microsoft.com/en-us/topic/update- to-enable-tls-1-1-and-tls-1-2-as-as-default-secure-protocols-in-winhttp-in-windows-c4bd73d2-31d7-761e-0178-11268bb10392)

รายการรีจิสทรี REG_DWORD ต่อไปนี้จะปรากฏบนคอมพิวเตอร์ของคุณใน

HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\

และ

HKLM\...Protocols\TLS 1.2\Servers
  • DisabledByDefault = 0
  • Enabled = 1

หากต้องการใช้ TLS 1.2 เป็นค่าเริ่มต้นสำหรับแอป WinHttp API ให้เพิ่มไฟล์

DefaultSecureProtocols = 0x00000A00

REG_DWORD พารามิเตอร์เป็น

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp

(บน Windows x64:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp

).

ต่อไปนี้คือค่าที่เป็นไปได้ของตัวเลือก DefaultSecureProtocols ซึ่งกำหนดโปรโตคอลที่อนุญาตสำหรับการเชื่อมต่อ WinHTTP:

  • 0x00000A0 - ค่าเริ่มต้นที่อนุญาต SSL 3.0 และ TLS 1.0 สำหรับ WinHTTP เท่านั้น

  • 0x0000AA0 — อนุญาตให้ใช้ TLS 1.1 และ TLS 1.2 นอกเหนือจาก SSL 3.0 และ TLS 1.0

  • 0x00000A00 - อนุญาต TLS 1.1 และ TLS 1.2 เท่านั้น

  • 0x00000800 - อนุญาตเฉพาะ TLS 1.2 เท่านั้น

ตั้งแต่ Windows 10 และ Windows Server 2016 Windows ทุกรุ่นรองรับ TLS 1.2 สำหรับ WinHTTP

คุณสามารถใช้สคริปต์ PowerShell ต่อไปนี้เพื่อสร้างพารามิเตอร์รีจิสทรีเหล่านี้:

$reg32bWinHttp = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp"
$reg64bWinHttp = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp"
$regWinHttpDefault = "DefaultSecureProtocols"
$regWinHttpValue = "0x00000800"
$regTLS12Client = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client"
$regTLS12Server = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server"
$regTLSDefault = "DisabledByDefault"
$regTLSValue = "0x00000000"
$regTLSEnabled = "Enabled"
$regTLSEnableValue = "0x00000001"
# for Windows x86
New-ItemProperty -Path $reg32bWinHttp -Name $regWinHttpDefault -Value $regWinHttpValue -PropertyType DWORD
# for Windows x64
New-ItemProperty -Path $reg64bWinHttp -Name $regWinHttpDefault -Value $regWinHttpValue -PropertyType DWORD
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2”
New-Item -Path $regTLS12Client
New-Item -Path $regTLS12Server
New-ItemProperty -Path $regTLS12Client -Name $regTLSDefault -Value $regTLSValue -PropertyType DWORD
New-ItemProperty -Path $regTLS12Client -Name $regTLSEnabled -Value $regTLSEnableValue -PropertyType DWORD
New-ItemProperty -Path $regTLS12Server -Name $regTLSDefault -Value $regTLSValue -PropertyType DWORD
New-ItemProperty -Path $regTLS12Server -Name $regTLSEnabled -Value $regTLSEnableValue -PropertyType DWORD

รีสตาร์ทเครื่องคอมพิวเตอร์โดยใช้คำสั่ง:

Restart-Computer

จากนั้นคุณต้องเปิดใช้งานการสนับสนุน TLS 1.2 สำหรับแอป .NET Framework ในการทำเช่นนี้ คุณต้องเปิดใช้งานโปรโตคอลการเข้ารหัสระบบสำหรับแอป .NET 3.5 และ 4.x ในรีจิสทรี หากคุณใช้ NET Framework เวอร์ชันเก่า เช่น 4.5.1 หรือ 4.5.2 บน Windows Server 2012 R2/2012 หรือ Windows 8.1 ก่อนอื่นให้ติดตั้งการอัปเดตล่าสุดสำหรับ .Net Framework 4.5.1 (ซึ่งจะเพิ่มการรองรับ TLS 1.2 สำหรับ .NET ).

ค้นหาตัวเลือกรีจิสทรีที่จะกำหนดค่าสำหรับ .Net เวอร์ชันต่างๆ ด้านล่าง:

สำหรับ .Net 3.5 หรือ 2.0:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001

สำหรับ .Net 4.x:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001

สำหรับ .Net 4.6:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001

ตัวอย่างเช่น หากไม่มีตัวเลือกเหล่านี้ คุณจะไม่สามารถเชื่อมต่อกับที่เก็บ PSGallery จากคอนโซล PowerShell บน Windows Server 2012 R2 โดยมีข้อผิดพลาดต่อไปนี้:

  • ติดตั้งโมดูล: ไม่สามารถดาวน์โหลดจาก URI

  • ไม่สามารถแก้ไขแหล่งที่มาของแพ็คเกจ

ปัญหาคือโดยค่าเริ่มต้น PowerShell พยายามใช้ TLS 1.0 เพื่อเชื่อมต่อกับ PSGallery ตั้งแต่เดือนเมษายน 2020 PowerShell Gallery ยอมรับเฉพาะการเชื่อมต่อ TLS 1.2 เท่านั้น

นอกจากนี้ ยังมีเครื่องมือ IISCrypto ฟรี ซึ่งอนุญาตให้เปิด/ปิดการตั้งค่า TLS/SSL เวอร์ชันต่างๆ และ Schannel ผ่าน GUI (https://www.nartac.com/Products/IISCrypto/) ที่นี่คุณสามารถเลือกเวอร์ชัน TLS ที่คุณต้องการเปิดใช้ หากช่องทำเครื่องหมายทั้งหมดถัดจากโปรโตคอล Schannel ไม่ได้ใช้งาน (เป็นสีเทา) แสดงว่า Windows กำลังใช้การตั้งค่าเริ่มต้น ในตัวอย่างของฉัน ฉันได้เปิดใช้งาน TLS 1.2 สำหรับเซิร์ฟเวอร์และไคลเอ็นต์โดยใช้สคริปต์ PowerShell ที่แสดงด้านบน ขณะนี้ IISCrypto แสดงว่า TLS 1.2 ถูกเปิดใช้งานด้วยตนเอง

IISCrypto ไม่อนุญาตให้เปลี่ยนการตั้งค่า TLS สำหรับ .NET หรือ WinHTTP

บน Windows Server 2022 ต้องเปิดใช้งาน TLS 1.3 เพื่อรองรับ HTTP/3 สำหรับเว็บไซต์ IIS

บทความที่เกี่ยวข้อง