מאפייני הבעיה
נניח כי ששדרגת ל- 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 הוצגה לא מאובטחים והן חשוף להתקפות כגון POODLE.
הערה אם אין באפשרותך לעדכן את השרת, השתמש במחלקת 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 Framework של .NET, ראה בעיות עבור 4.6 Framework של .NET מוכרות.
מידע נוסף
לקבלת מידע נוסף אודות שינויים ניהול גירסאות מוצר והשפעה ב- 4.6 Framework של .NET, ראה תאימות היישומים ב- 4.6 Framework של .NET.
הערות
-
התצורה החדשה יחולו רק כאשר היישום הוא פילוח 4.6 Framework של .NET. .NET Framework 4.5.2 ובגירסאות קודמות לא יושפעו גם אם הם פועלים בסביבת .NET Framework 4.6.
-
רשימה של ממשקי Api המושפע ברמה העליונה:
-
HttpClient, HttpWebRequest
-
FtpClient
-
SmtpClient
-
SslStream
-
-
SCH_USE_STRONG_CRYPTO דגל זה עומד לשמש באופן אוטומטי 4.6 מסגרת .NET ומשפיע על התנהגות על-ידי הסרת אלגוריתמי הצפנה, hashing לא בטוחים. עבור כל הפלטפורמות מערכת הפעלה הקודמת ל- Windows 10, אלגוריתם RC4 יוסרו משימוש. מתוך 10 חלונות, אלגוריתמים שאינם בטוחים נוספים הבאים יוסרו: DES, NULL, יצא ו- MD5