توضیحات: درخواست لغو شد: ایجاد کانال امن SSL/TLS ناموفق بود. کانال امن SSL/TLS ایجاد نشد. پلتفرمهای ساخت: Windows Server 2012، Windows 7 Service Pack 1 (SP1) و Windows Server 2008 R2 SP1
[قسمت] دانلود وب سایت این یک ابزار دانلود کل سایت است که برای دانلود با یک کلیک آدرس اینترنتی را وارد کنید و دارای وظایف چند رشته ای است.
کد را قبل از 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 در ویندوز، این بهروزرسانی از امنیت لایه انتقال (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 را تغییر می دهد.
هیچ یک از دو روش قبلی کار نمی کند، بنابراین فقط می توانید از روش نهایی استفاده کنید:
توجه: برای نسخه های خاص TSL که توسط هر نسخه ویندوز پشتیبانی می شود، لطفاً به اطلاعات تکمیلی در این مقاله مراجعه کنید.
راه حل ها وجود دارند، اما به نسخه چارچوب بستگی دارند:
دات نت 4.6 و بالاتر. برای پشتیبانی از TLS 1.2 نیازی به انجام کار اضافی ندارید، به طور پیش فرض پشتیبانی می شود.
دات نت 4.5. TLS 1.2 پشتیبانی می شود، اما پروتکل پیش فرض نیست. شما باید انتخاب کنید که از آن استفاده کنید. کد زیر TLS 1.2 را به عنوان پیش فرض تنظیم می کند، قبل از اتصال به یک منبع امن، مطمئن شوید که آن را اجرا کنید:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
دات نت 4.0. TLS 1.2 پشتیبانی نمی شود، اما اگر .NET 4.5 (یا بالاتر) روی سیستم شما نصب شده باشد، شما همچنان می توانید از TLS 1.2 استفاده کنید، حتی اگر چارچوب برنامه شما از TLS 1.2 پشتیبانی نکند. تنها مشکل این است که SecurityProtocolType در NET 4.0 هیچ ورودی برای TLS1.2 ندارد، بنابراین باید از نمایش عددی این مقدار enum استفاده کنیم:
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;
دات نت 3.5 یا پایین تر. TLS 1.2 (*) پشتیبانی نمی شود و هیچ راه حلی وجود ندارد. برنامه خود را به آخرین نسخه فریمورک ارتقا دهید.
PS برای سناریوی 3، یک هک رجیستری نیز وجود دارد که 4.5 را مجبور به استفاده از TLS 1.2 به طور پیش فرض بدون نیاز به اجبار برنامه ریزی می کند. PPS همانطور که Christian Pop مایکروسافت در زیر ذکر می کند، آخرین پچ موجود برای .NET 3.5 وجود دارد که پشتیبانی از TLS1.2 را فعال می کند.
دیدن:
شاید طول کلید گواهی ارائه شده توسط وب سایت 512 بیت باشد و طبق استانداردهای فعلی صنعت، باید دارای یک کلید عمومی کمتر از 2048 بیت باشد. بهروزرسانی امنیتی مایکروسافت در سپتامبر 2016 به این مشکل پاسخ داد و بیان کرد که اگر طول کلید عمومی کمتر از 2048 بایت باشد (به عنوان مثال RSA 512)،ویندوز می تواند اتصالات 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
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 //Close ssl3 ServicePointManager.SecurityProtocol |= (SecurityProtocolType)0x300 (SecurityProtocolType.1
نتیجه 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
این مقاله توسطدانلود وب سایتجمع آوری و سازماندهی شده، مطالب از اینترنت می آید، لطفا منبع را هنگام چاپ مجدد ذکر کنید، با تشکر.