อาการ
สมมติว่า คุณได้ปรับรุ่นเป็น Microsoft .NET Framework 4.6 บนคอมพิวเตอร์ของคุณ เมื่อคุณใช้โปรแกรมประยุกต์ที่ใช้ SSL 3.0 ร่วมกับServicePointManagerหรือSslStream Api ที่สามารถเชื่อมต่อไปยังเซิร์ฟเวอร์ การเชื่อมต่อล้มเหลว
สาเหตุ
ปัญหานี้เกิดขึ้นเนื่องจากมีการเปลี่ยนแปลงการตั้งค่าเริ่มต้นของโพรโทคอล SSL/TLS ที่ถูกใช้ โดยServicePointManagerและSslStream
ค่าเก่า: Ssl 3.0 | Tls 1.0 | Tls 1.1
ค่าใหม่: Tls 1.0 | Tls 1.1 | Tls 1.2
วิธีแก้ปัญหา
เมื่อต้องการหลีกเลี่ยงปัญหานี้ ปรับปรุงเซิร์ฟเวอร์ การ Tls 1.0, Tls 1.1, Tls 1.2 เนื่องจาก SSL 3.0 ได้ถูกแสดงเป็นความเสี่ยงต่อการโจมตีเช่นเปิดกรุกระโปรง และไม่ปลอดภัย
หมายเหตุ ถ้าคุณไม่สามารถปรับปรุงเซิร์ฟเวอร์ ใช้คลาสAppContextเพื่อเข้าร่วมออกจากคุณลักษณะนี้ เมื่อต้องการทำเช่นนี้ ใช้หนึ่งในวิธีต่อไปนี้:
-
โดยการเขียนโปรแกรม: ต้องเป็นสิ่งแรกที่แอพลิเคชันไม่ได้เนื่องจากServicePointManagerจะเตรียมใช้งานเพียงครั้งเดียว ใช้ตัวอย่างรหัสต่อไปนี้ในโปรแกรมประยุกต์ของคุณ:
private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
AppContext.SetSwitch(DisableCachingName, true);
AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true); -
โดยใช้แฟ้ม AppConfig สำหรับโปรแกรมประยุกต์ของคุณ: ให้เพิ่มบรรทัดต่อไปนี้ไปยังแฟ้ม Appconfig:
< AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/ >
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหาที่ทราบใน 4.6 กรอบงาน.NET ดูการตัดสินค้าจากคลังสำหรับ 4.6 กรอบงาน.NET รู้จักกันในชื่อ
ข้อมูลเพิ่มเติม
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงการกำหนดรุ่นผลิตภัณฑ์และผลกระทบใน 4.6 กรอบงาน.NET ดูความเข้ากันได้ของโปรแกรมประยุกต์ใน 4.6 กรอบงาน.NET
หมายเหตุ
-
การตั้งค่าคอนฟิกใหม่จะใช้ได้เฉพาะเมื่อแอพลิเคชันจะกำหนดเป้าหมาย 4.6 กรอบงาน.NET .NET Framework 4.5.2 และรุ่นก่อนหน้านี้จะไม่มีผลแม้ว่าจะทำงานในสภาพแวดล้อมของ.NET Framework 4.6
-
รายการของ APIs ระดับสูงสุดที่ได้รับผลกระทบ:
-
HttpClient, HttpWebRequest
-
FtpClient
-
SmtpClient
-
SslStream
-
-
SCH_USE_STRONG_CRYPTO ค่าสถานะนี้จะถูกใช้โดยอัตโนมัติใน 4.6 กรอบงาน.NET และมีผลต่อลักษณะการทำงาน โดยการเอาออกไม่ปลอดภัยเข้ารหัสลับ และการแปลงแป้นพิมพ์อัลกอริทึม สำหรับแพลตฟอร์มระบบปฏิบัติการทั้งหมด เร็วกว่า Windows 10 อัลกอริทึมแบบ RC4จะถูกเอาออกจากการใช้งาน จาก Windows 10 อัลไม่ปลอดภัยเพิ่มเติมต่อไปนี้จะถูกเอาออก: DES, NULLส่งออกและmd 5