คำอธิบาย: คำขอถูกยกเลิก: ไม่สามารถสร้างช่องทางที่ปลอดภัย SSL/TLS ไม่สามารถสร้างช่องทางที่ปลอดภัย SSL/TLS สร้างแพลตฟอร์ม: Windows Server 2012, Windows 7 Service Pack 1 (SP1) และ Windows Server 2008 R2 SP1
[ตอน] ดาวน์โหลดเว็บไซต์ เป็นเครื่องมือดาวน์โหลดทั้งเว็บไซต์ ป้อน URL เพื่อดาวน์โหลดด้วยคลิกเดียว
ตั้งรหัสก่อน HttpWebRequest
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
หากวิธีการข้างต้นไม่ได้ผล แสดงว่าเป็นปัญหาระดับระบบ อัปเดตแพตช์ระบบตามระบบที่คุณใช้อยู่
การอัปเดตเพื่อเปิดใช้งาน TLS 1.1 และ TLS 1.2 เป็นโปรโตคอลความปลอดภัยเริ่มต้นใน WinHTTP ใน Windows การอัปเดตนี้ให้การสนับสนุน Transport Layer Security (TLS) ใน Windows Server 2012, Windows 7 Service Pack 1 (SP1) และ Windows Server 2008 R2 SP1 1.1 และการสนับสนุน TLS 1.2 โปรดดูเอกสารอย่างเป็นทางการ https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
คัดลอกรหัสรีจิสทรีต่อไปนี้และนำเข้าสู่รีจิสทรี สร้าง txt ใหม่ เปลี่ยนส่วนต่อท้าย txt เป็น reg (คีย์รีจิสทรี) และนำเข้า (สำรองข้อมูลก่อนนำเข้า)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000800 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000800 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
PowerShell เปิด:
[Net.ServicePointManager]::SecurityProtocol [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
โค้ดบรรทัดแรกจะตรวจสอบเวอร์ชัน TLS ที่รองรับ โค้ดบรรทัดที่สองจะแก้ไขการรองรับ TLS
ทั้ง 2 วิธีก่อนหน้านี้ใช้ไม่ได้ผล ดังนั้นคุณจึงใช้ได้เฉพาะวิธีสุดท้ายเท่านั้น:
หมายเหตุ: สำหรับเวอร์ชัน TSL เฉพาะที่รองรับโดย Windows แต่ละเวอร์ชัน โปรดดูข้อมูลเพิ่มเติมในบทความนี้
มีวิธีแก้ไขปัญหาอยู่ แต่ขึ้นอยู่กับเวอร์ชันของเฟรมเวิร์ก:
.NET 4.6 ขึ้นไป คุณไม่จำเป็นต้องทำงานเพิ่มเติมใดๆ เพื่อรองรับ TLS 1.2 เนื่องจากได้รับการรองรับเป็นค่าเริ่มต้น
.NET4.5. รองรับ TLS 1.2 แต่ไม่ใช่โปรโตคอลเริ่มต้น คุณต้องเลือกใช้มัน รหัสต่อไปนี้จะตั้งค่า TLS 1.2 เป็นค่าเริ่มต้น ตรวจสอบให้แน่ใจว่าได้ดำเนินการก่อนที่จะเชื่อมต่อกับทรัพยากรที่ปลอดภัย:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.NET4.0. ไม่รองรับ TLS 1.2 แต่หากติดตั้ง .NET 4.5 (หรือสูงกว่า) บนระบบของคุณ คุณยังคงมีตัวเลือกในการใช้ TLS 1.2 แม้ว่ากรอบงานแอปพลิเคชันของคุณจะไม่รองรับ TLS 1.2 ก็ตาม ปัญหาเดียวคือ SecurityProtocolType ใน .NET 4.0 ไม่มีรายการสำหรับ TLS1.2 ดังนั้นเราจึงต้องใช้การแสดงตัวเลขของค่าแจงนับนี้:
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072;
.NET 3.5 หรือต่ำกว่า ไม่รองรับ TLS 1.2(*) และไม่มีวิธีแก้ปัญหาเฉพาะหน้า อัปเกรดแอปพลิเคชันของคุณเป็นเวอร์ชันล่าสุดของเฟรมเวิร์ก
PS สำหรับสถานการณ์ที่ 3 ยังมีการแฮ็กรีจิสทรีที่จะบังคับให้ 4.5 ใช้ TLS 1.2 เป็นค่าเริ่มต้นโดยไม่ต้องบังคับโดยทางโปรแกรม PPS ตามที่ Christian Pop ของ Microsoft กล่าวถึงด้านล่าง มีแพตช์ล่าสุดสำหรับ .NET 3.5 ซึ่งเปิดใช้งานการรองรับ TLS1.2
ดู:
บางทีความยาวของคีย์ใบรับรองที่เว็บไซต์ให้ไว้คือ 512 บิต และตามมาตรฐานอุตสาหกรรมในปัจจุบัน ควรมีคีย์สาธารณะไม่ต่ำกว่า 2,048 บิต การอัปเดตความปลอดภัยเดือนกันยายน 2559 ของ Microsoft ตอบสนองต่อปัญหานี้โดยระบุว่าหากรหัสสาธารณะมีความยาวน้อยกว่า 2,048 ไบต์ (เช่น RSA 512)Windows สามารถยกเลิกการเชื่อมต่อ HTTPS ได้
2012 R2 and Windows 8
2008 R2 and Windows 7
SecurityProtocolType.Tls1.0=0xC0; SecurityProtocolType.Tls1.1=0x300; SecurityProtocolType.Tls1.2=0xC00;
ค่าเริ่มต้น .net 4.0/4.5: SecurityProtocolType.Tls |. SecurityProtocolType.Ssl3 .net 4.6/4.7 ค่าเริ่มต้น: SecurityProtocolType.Tls11 |
SCH_USE_STRONG_CRYPTO การตั้งค่าสถานะนี้จะถูกใช้โดยอัตโนมัติใน .NET Framework 4.6 https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-net-framework ใน Win7Sp1 และ .Net 3.5.1 รองรับ TLS1.2
ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3; //ปิด ssl3 ServicePointManager.SecurityProtocol |= (SecurityProtocolType)0x300 | (SecurityProtocolType)0xc00; //เพิ่มการสนับสนุนสำหรับ 1.1 และ 1.2
บทสรุปของ TLS1.2 คือ:
การแก้ไขรีจิสทรีภายใต้ .net4
Windows Registry Editor Version 5.00 [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
บทความนี้เขียนโดยดาวน์โหลดเว็บไซต์รวบรวมและเรียบเรียงเนื้อหามาจากอินเตอร์เน็ต กรุณาระบุแหล่งที่มาเมื่อพิมพ์ซ้ำ ขอบคุณครับ