سؤال

نحن غير قادرين على الاتصال بخادم HTTPS باستخدام WebRequest بسبب رسالة الخطأ هذه:

The request was aborted: Could not create SSL/TLS secure channel.

نحن نعلم أن الخادم ليس لديه شهادة HTTPS صالحة مع المسار المستخدم ، ولكن لتجاوز هذه المشكلة ، نستخدم الكود التالي الذي أخذناه من منشور stackoverflow آخر:

private void Somewhere() {
    ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(AlwaysGoodCertificate);
}

private static bool AlwaysGoodCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors policyErrors) {
   return true;
}

المشكلة هي أن الخادم لا يتحقق أبدًا من الشهادة ويفشل مع الخطأ أعلاه. هل لدى أي شخص أي فكرة عما يجب علي فعله؟


أود أن أذكر أن زميلًا وزميلًا أجريوا اختبارات قبل بضعة أسابيع وكان يعمل بشكل جيد مع شيء مشابه لما كتبته أعلاه. "الفرق الرئيسي" الوحيد الذي وجدناه هو أنني أستخدم Windows 7 وكان يستخدم Windows XP. هل هذا يغير شيئا؟

هل كانت مفيدة؟

المحلول

لقد وجدت الإجابة أخيرًا (لم ألاحظ مصدري ولكنه كان من بحث) ؛

بينما يعمل الرمز في Windows XP ، في Windows 7 ، يجب عليك إضافة هذا في البداية:

// using System.Net;
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
// Use SecurityProtocolType.Ssl3 if needed for compatibility reasons

والآن ، يعمل بشكل مثالي.


إضافة

كما ذكر روبن الفرنسية ؛ إذا كنت تحصل على هذه المشكلة أثناء تكوين PayPal ، فيرجى ملاحظة أنها لن تدعم SSL3 بدءًا من شهر ديسمبر ، 3rd 2018. ستحتاج إلى استخدام TLS. هنا صفحة PayPal حوله.

نصائح أخرى

الحل لهذا ، في .NET 4.5 هو

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

إذا لم يكن لديك .NET 4.5 ثم استخدم

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

تأكد من إجراء إعدادات ServicePointManager قبل إنشاء httpwebrequest ، وإلا فلن يعمل.

الأعمال:

        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
               | SecurityProtocolType.Tls11
               | SecurityProtocolType.Tls12
               | SecurityProtocolType.Ssl3;

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://google.com/api/")

يفشل:

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://google.com/api/")

        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
               | SecurityProtocolType.Tls11
               | SecurityProtocolType.Tls12
               | SecurityProtocolType.Ssl3;

المشكلة التي تواجهها هي أن مستخدم ASPNET لا يمكنه الوصول إلى الشهادة. عليك أن تتيح الوصول باستخدام winhttpcertcfg.exe

مثال على كيفية إعداد هذا هو في:http://support.microsoft.com/kb/901183

تحت الخطوة 2 في مزيد من المعلومات

تحرير: في الإصدارات الأكثر حداثة من IIS ، تم تصميم هذه الميزة في أداة مدير الشهادة - ويمكن الوصول إليها من خلال النقر بزر الماوس الأيمن على الشهادة واستخدام خيار إدارة المفاتيح الخاصة. مزيد من التفاصيل هنا: https://serverfault.com/questions/131046/how-to-grant-iis-7-5-access-to-a-certificate-in-certificate-store/132791#132791

الخطأ عام وهناك العديد من الأسباب التي تجعل مفاوضات SSL/TLS قد تفشل. الأكثر شيوعًا هو شهادة خادم غير صالحة أو منتهية الصلاحية ، وقد اهتمت بذلك من خلال توفير خطاف التحقق من شهادة الخادم الخاص بك ، ولكن ليس بالضرورة هو السبب الوحيد. قد يتطلب الخادم مصادقة متبادلة ، قد يتم تكوينه باستخدام أجنحة من الأصفار غير مدعومة من قبل عميلك ، وقد يكون لها انجراف كبير جدًا حتى ينجح المصافحة والعديد من الأسباب.

أفضل حل هو استخدام مجموعة أدوات استكشاف الأخطاء وإصلاحها Schannel. Schannel هو مزود SSPI المسؤول عن SSL و TLS وسيستخدمها عميلك للمصافحة. ألق نظرة على أدوات وإعدادات TLS/SSL.

انظر أيضا كيفية تمكين تسجيل حدث Schannel.

لقد واجهت هذه المشكلة تحاول أن أضرب https://ct.mob0.com/styles/fun.png, ، وهي صورة موزعة بواسطة CloudFlare على CDN التي تدعم أشياء مجنونة مثل SPDY و WEIDED REDIRECT SSL CERTS.

بدلاً من تحديد SSL3 كما في إجابة سيمونز ، تمكنت من إصلاحه عن طريق النزول إلى TLS12 مثل هذا:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
new WebClient().DownloadData("https://ct.mob0.com/Styles/Fun.png");

بعد عدة ساعات طويلة مع هذه المشكلة نفسها ، وجدت أن حساب ASP.NET الذي كانت خدمة العميل قيد التشغيل تحتها لم يكن بإمكانه الوصول إلى الشهادة. لقد قمت بإصلاحه عن طريق الانتقال إلى مجموعة تطبيقات IIS التي يتم تشغيل تطبيق الويب أسفلها ، والذهاب إلى إعدادات متقدمة ، وتغيير الهوية إلى LocalSystem حساب من NetworkService.

الحل الأفضل هو الحصول على الشهادة مع الافتراضي NetworkService حساب ولكن هذا يعمل للاختبار الوظيفي السريع.

شيء لم يكن الجواب الأصلي. أضفت المزيد من التعليمات البرمجية لجعله دليل على الرصاص.

ServicePointManager.Expect100Continue = true;
        ServicePointManager.DefaultConnectionLimit = 9999;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;

احتمال آخر هو استيراد شهادة غير لائق على المربع. تأكد من تحديد خانة الاختيار محطمة. في البداية لم أفعل ذلك ، لذلك كان الكود إما توقيت أو رمي نفس الاستثناء الذي لا يمكن تحديد موقعه.

certificate importation dialog

"تم إحباط الطلب: لا يمكن إنشاء قناة آمنة SSL/TLS" يمكن أن يحدث استثناء إذا كان الخادم يعيد HTTP 401 غير مصرح به الرد على طلب HTTP.

يمكنك تحديد ما إذا كان هذا يحدث عن طريق تشغيل تسجيل مستوى على مستوى التتبع لتطبيق العميل الخاص بك ، كما هو موضح في هذا الجواب.

بمجرد أن يكون تكوين التسجيل في مكانه ، قم بتشغيل التطبيق وإعادة إنتاج الخطأ ، ثم ابحث في إخراج التسجيل لخط مثل هذا:

System.Net Information: 0 : [9840] Connection#62912200 - Received status line: Version=1.1, StatusCode=401, StatusDescription=Unauthorized.

في وضعي ، كنت أخفق في تعيين ملف تعريف ارتباط معين يتوقعه الخادم ، مما أدى إلى استجابة الخادم للطلب مع خطأ 401 ، مما أدى بدوره إلى "لا يمكن إنشاء قناة آمنة SSL/TLS".

كان جذر هذا الاستثناء في حالتي هو أنه في مرحلة ما من الكود ، تم استدعاء ما يلي:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

هذا سيء حقا. لا يقتصر الأمر على تعليمات .NET لاستخدام بروتوكول غير آمن ، ولكن هذا يؤثر على كل طلب ويب جديد (وتشابه) تم تقديمه بعد ذلك داخل AppDomain. (لاحظ أن طلبات الويب الواردة لا تتأثر في تطبيق ASP.NET الخاص بك ، ولكن طلبات الويب الجديدة ، مثل التحدث إلى خدمة ويب خارجية ، هي).

في حالتي ، لم تكن هناك حاجة فعلاً ، لذلك يمكنني فقط حذف البيان وبدأت جميع طلبات الويب الأخرى في العمل بشكل جيد مرة أخرى. بناءً على قراءتي في مكان آخر ، تعلمت بعض الأشياء:

  • هذا إعداد عالمي في AppDomain الخاص بك ، وإذا كان لديك نشاط متزامن ، فلا يمكنك ضبطه بشكل موثوق على قيمة واحدة ، وقم بإجراءك ، ثم أعده. قد يحدث إجراء آخر خلال تلك النافذة الصغيرة ويتأثر.
  • الإعداد الصحيح هو تركه افتراضيًا. يتيح هذا .NET الاستمرار في استخدام كل ما هي القيمة الافتراضية الأكثر أمانًا مع مرور الوقت وترقية الأطر. سيعمل وضعه على TLS12 (وهو الأكثر أمانًا حتى كتابة هذه السطور) حاليا ولكن في 5 سنوات قد تبدأ في التسبب في مشاكل غامضة.
  • إذا كنت بحاجة حقًا إلى تعيين قيمة ، فيجب عليك التفكير في القيام بذلك في تطبيق متخصص منفصل أو AppDomain وإيجاد طريقة للتحدث بينها وبين تجمعك الرئيسي. نظرًا لأنها قيمة عالمية واحدة ، فإن محاولة إدارتها داخل مجموعة التطبيقات المزدحمة ستؤدي فقط إلى المتاعب. هذا الجواب: https://stackoverflow.com/a/26754917/7656 يوفر حلًا ممكنًا عن طريق الوكيل المخصص. (لاحظ أنني لم أقم بتنفيذها شخصيًا.)

هذا واحد يعمل بالنسبة لي في MVC WebClient

    public string DownloadSite(string RefinedLink)
    {
        try
        {
            Uri address = new Uri(RefinedLink);

            ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

            System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

            using (WebClient webClient = new WebClient())
            {
                var stream = webClient.OpenRead(address);
                using (StreamReader sr = new StreamReader(stream))
                {
                    var page = sr.ReadToEnd();

                    return page;
                }
            }

        }
        catch (Exception e)
        {
            log.Error("DownloadSite - error Lin = " + RefinedLink, e);
            return null;
        }
    }

كما يمكنك أن تقول أن هناك الكثير من الأسباب التي قد يحدث هذا. اعتقدت أنني سأضيف السبب الذي واجهته ...

إذا قمت بتعيين قيمة WebRequest.Timeout إلى 0, ، هذا هو الاستثناء الذي تم إلقاؤه. فيما يلي الرمز الذي كان لدي ... (باستثناء بدلاً من ترميز شديد 0 بالنسبة لقيمة المهلة ، كان لديّ معلمة تم ضبطها عن غير قصد 0).

WebRequest webRequest = WebRequest.Create(@"https://myservice/path");
webRequest.ContentType = "text/html";
webRequest.Method = "POST";
string body = "...";
byte[] bytes = Encoding.ASCII.GetBytes(body);
webRequest.ContentLength = bytes.Length;
var os = webRequest.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Close();
webRequest.Timeout = 0; //setting the timeout to 0 causes the request to fail
WebResponse webResponse = webRequest.GetResponse(); //Exception thrown here ...

سبب آخر محتمل ل The request was aborted: Could not create SSL/TLS secure channel الخطأ هو عدم تطابق بين قيم cipher_suites التي تم تكوينها لعميلها ، والقيم التي يتم تكوينها على أنها مستعدة وقادرة على قبولها. في هذه الحالة ، عندما يرسل عميلك قائمة قيم Cipher_suites التي يمكنها قبولها في رسالة مصافحة/مفاوضات SSL الأولية ، يرى الخادم أن أيا من القيم المقدمة مقبولة ، وقد تُرجع "تنبيهًا" "الاستجابة بدلاً من المتابعة إلى خطوة" الخادم Hello "من مصافحة SSL.

للتحقيق في هذا الاحتمال ، يمكنك التنزيل محلل الرسائل Microsoft, ، واستخدمه لتشغيل تتبع على مفاوضات SSL التي تحدث عند محاولة تفشل في إنشاء اتصال HTTPS بالخادم (في تطبيق C# الخاص بك).

إذا كنت قادرًا على إجراء اتصال HTTPS ناجح من بيئة أخرى (على سبيل المثال ، فإن جهاز Windows XP الذي ذكرته-أو ربما عن طريق ضرب عنوان URL HTTPS في متصفح غير مايكروسوفت لا يستخدم إعدادات جناح تشفير OS ، مثل Chrome أو Firefox) ، قم بتشغيل تتبع محلل رسائل آخر في تلك البيئة لالتقاط ما يحدث عندما ينجح مفاوضات SSL.

نأمل أن ترى بعض الاختلاف بين رسالتي Hello العميل التي ستتيح لك تحديد ما هو بالضبط عن تفاوض SSL الفاشل الذي تسبب في فشله. بعد ذلك ، يجب أن تكون قادرًا على إجراء تغييرات في التكوين على Windows التي ستسمح لها بالنجاح. iiscrypto هي أداة رائعة لاستخدامها لهذا (حتى بالنسبة لأجهزة الكمبيوتر العميل ، على الرغم من اسم "IIS").

يحكم مفتاحان سجل Windows التاليان قيم Cipher_suites التي سيستخدمها جهاز الكمبيوتر الخاص بك:

  • HKLM Software Policies Microsoft Cryptography Configuration SSL 00010002
  • hklm system currentControlset Control Cryptography configuration local ssl 00010002

إليك كتابة كاملة عن كيفية التحقيق وحل مثال هذا التنوع من Could not create SSL/TLS secure channel مشكلة: http://blog.jonschneider.com/2016/08/fix-ssl hadhaking-error-in-windows.html

لقد ناضلت مع هذه المشكلة طوال اليوم.

عندما أنشأت مشروعًا جديدًا مع .NET 4.5 ، حصلت أخيرًا على العمل.

ولكن إذا قمت بتخفيض مستوى 4.0 ، فقد حصلت على نفس المشكلة مرة أخرى ، وكان من لا رجعة فيه لهذا المشروع (حتى عندما حاولت الترقية إلى 4.5 مرة أخرى).

غريب لا توجد رسالة خطأ أخرى ولكن "تم إحباط الطلب: لا يمكن إنشاء قناة آمنة SSL/TLS." جاء لهذا الخطأ

في حالة أن العميل عبارة عن جهاز Windows ، قد يكون السبب المحتمل هو عدم تنشيط بروتوكول TLS أو SSL المطلوب من قبل الخدمة.

يمكن تعيين هذا في:

لوحة التحكم -> الشبكة والإنترنت -> خيارات الإنترنت -> متقدمة

قم بالتمرير إلى "الأمان" واختيار بين

  • استخدم SSL 2.0
  • استخدم SSL 3.0
  • استخدم TLS 1.0
  • استخدم TLS 1.1
  • استخدم TLS 1.2

enter image description here

واجهت هذه المشكلة لأن الويب الخاص بي.

<httpRuntime targetFramework="4.5.2" />

و لا:

<httpRuntime targetFramework="4.6.1" />

في حالتي ، لم يكن لحساب الخدمة الذي يدير التطبيق إذنًا للوصول إلى المفتاح الخاص. بمجرد أن أعطيت هذا الإذن ، ذهب الخطأ بعيدا

  1. MMC
  2. الشهادات
  3. توسع إلى الشخصية
  4. حدد شهادة
  5. انقر على اليمين
  6. كل المهام
  7. إدارة المفاتيح الخاصة
  8. يضيف

إذا كنت تقوم بتشغيل التعليمات البرمجية الخاصة بك من Visual Studio ، فحاول تشغيل Visual Studio كمسؤول. إصلاح القضية بالنسبة لي.

كنت أواجه نفس القضية ووجدت هذا الجواب عملت بشكل صحيح بالنسبة لي. المفتاح هو 3072. هذا الرابط يوفر التفاصيل حول إصلاح "3072".

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

XmlReader r = XmlReader.Create(url);
SyndicationFeed albums = SyndicationFeed.Load(r);

في حالتي ، تتطلب الخلاصة الإصلاح:

https://www.fbi.gov/feeds/fbi-in-the-news/atom.xml
https://www.wired.com/feed/category/gear/latest/rss

System.net.webexception: تم إحباط الطلب: لا يمكن إنشاء قناة آمنة SSL/TLS.

في حالتنا ، نحن نستخدم بائع برامج ، لذلك لم نتمكن من الوصول إلى تعديل رمز .NET. على ما يبدو .NET 4 لن تستخدم TLS V 1.2 ما لم يكن هناك تغيير.

كان الإصلاح بالنسبة لنا هو إضافة مفتاح SchusestrongCrypto إلى السجل. يمكنك نسخ/لصق الرمز أدناه في ملف نصي مع امتداد .Rreg وتنفيذه. كان بمثابة "التصحيح" لدينا للمشكلة.

Windows Registry Editor Version 5.00

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

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

جرب هذا:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

ال إجابة من أعلى من المحتمل أن تكون كافية لمعظم الناس. ومع ذلك ، في بعض الحالات ، يمكنك الاستمرار في الحصول على خطأ "لا يمكن إنشاء قناة آمنة SSL/TLS" حتى بعد فرض TLS 1.2. إذا كان الأمر كذلك ، فقد ترغب في الاستشارة هذه المقالة المفيدة لخطوات استكشاف الأخطاء وإصلاحها إضافية. لتلخيص: مستقلة عن مشكلة إصدار TLS/SSL ، يجب أن يتفق العميل والخادم على "جناح تشفير". أثناء مرحلة "المصافحة" من اتصال SSL ، ستقوم العميل بإدراج نوبات الشفرات المدعومة من الخادم للتحقق من قائمته الخاصة. ولكن في بعض أجهزة Windows ، قد تكون بعض بدايات الشفرات الشائعة قد تم تعطيلها (على ما يبدو بسبب محاولات ذاتية النية للحد من سطح الهجوم) ، مما يقلل من إمكانية الموافقة على العميل والخادم على مجموعة تشفير. إذا لم يتمكنوا من الاتفاق ، فقد ترى "رمز التنبيه القاتل 40" في عارض الحدث و "لا يمكن إنشاء قناة SSL/TLS الآمنة" في برنامج .NET الخاص بك.

تشرح المقالة المذكورة أعلاه كيفية إدراج جميع أجنحة الشفرة التي يحتمل أن تدعمها الجهاز وتمكين أجنحة تشفير إضافية من خلال سجل Windows. للمساعدة في التحقق من الأجنحة المشفرة التي يتم تمكينها على العميل ، حاول الزيارة هذه الصفحة التشخيصية في MSIE. (قد يعطي تتبع System.net نتائج أكثر تحديدًا.) للتحقق من الأجنحة المشفرة التي يدعمها الخادم ، حاول هذه الأداة عبر الإنترنت (على افتراض أن الخادم يمكن الوصول إليه على الإنترنت). يجب أن يذهب دون قول ذلك يجب أن تتم تعديلات السجل بحذر, ، خاصة عندما تشارك الشبكات. (هل جهازك VM مستضيف عن بُعد؟ إذا كنت ستحطم الشبكات ، فهل يمكن الوصول إلى VM على الإطلاق؟)

في حالة شركتي ، قمنا بتمكين العديد من أجنحة "ECDHE_ECDSA" عن طريق تحرير التسجيل ، لإصلاح مشكلة فورية وحراسة من المشكلات المستقبلية. ولكن إذا لم تتمكن من (أو لا) تحرير السجل ، فإن العديد من الحلول (ليست جميلة بالضرورة) تتبادر إلى الذهن. على سبيل المثال: يمكن لبرنامج .NET الخاص بك تفويض حركة مرور SSL إلى برنامج Python منفصل (والذي قد ينجح نفسه ، لنفس السبب الذي قد تنجح فيه طلبات Chrome حيث تفشل طلبات MSIE على جهاز متأثر).

كانت المشكلة بالنسبة لي هي أنني كنت أحاول نشرها على IIS كخدمة ويب ، لقد قمت بتثبيت الشهادة على الخادم ، لكن المستخدم الذي يقوم بتشغيل IIS لم يكن لديه الأذونات الصحيحة في الشهادة.

كيفية إعطاء ASP.NET الوصول إلى مفتاح خاص في شهادة في متجر الشهادة؟

في حالتي ، واجهت هذه المشكلة عندما حاولت خدمة Windows الاتصال بخدمة ويب. عند النظر في أحداث Windows أخيرًا ، وجدت رمز خطأ.

يتم رفع معرف الحدث 36888 (شانيل):

The following fatal alert was generated: 40. The internal error state is 808.

أخيرًا ، كان مرتبطًا بنظام Windows Hotfix. في حالتي: KB3172605 و KB3177186

كان الحل المقترح في منتدى VMware هو إضافة إدخال سجل في Windows. بعد إضافة السجل التالي ، يعمل كل شيء بشكل جيد.

hkey_local_machine system currentControlset Control SecurityProviders schannel keyexchangealgorithms diffie-hellman

"ClientMinKeybitLength" = dword: 00000200

يبدو أنه مرتبط بقيمة مفقودة في مصافحة HTTPS في جانب العميل.

اذكر إصلاح Windows Hot:

wmic qfe list

موضوع الحل:

https://communities.vmware.com/message/2604912#2604912

آمل أن يكون ذلك يساعد.

لم تعمل أي من الإجابات بالنسبة لي.

هذا ما نجح:

بدلا من تهيئة بلدي X509Certifiacte2 مثله:

   var certificate = new X509Certificate2(bytes, pass);

لقد فعلت ذلك مثل هذا:

   var certificate = new X509Certificate2(bytes, pass, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

لاحظ ال X509KeyStorageFlags.Exportable !!

لم أغير بقية الكود ( WebRequest بحد ذاتها):

// I'm not even sure the first two lines are necessary:
ServicePointManager.Expect100Continue = true; 
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

request = (HttpWebRequest)WebRequest.Create(string.Format("https://{0}.sii.cl/cvc_cgi/dte/of_solicita_folios", server));
request.Method = "GET";
request.Referer = string.Format("https://hercules.sii.cl/cgi_AUT2000/autInicio.cgi?referencia=https://{0}.sii.cl/cvc_cgi/dte/of_solicita_folios", servidor);
request.UserAgent = "Mozilla/4.0";
request.ClientCertificates.Add(certificate);
request.CookieContainer = new CookieContainer();

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    // etc...
}

في الواقع ، لست متأكدًا من أن الخطين الأولين ضروريان ...

يمكن أن يكون لهذا السؤال العديد من الإجابات لأنه يتعلق برسالة خطأ عام. واجهنا هذه القضية على بعض خوادمنا ، ولكن ليس آلات التطوير لدينا. بعد سحب معظم شعرنا ، وجدنا أنه خطأ في Microsoft.

https://support.microsoft.com/en-us/help/4458166/applications-that-raly-on-tls-2-2 -2-trong-encryption-experience-connect

في الأساس ، تفترض MS أنك تريد تشفيرًا أضعف ، ولكن يتم تصحيح نظام التشغيل للسماح فقط بـ TLS 1.2 ، بحيث تتلقى قناة آمنة من SSL/TLS. "

هناك ثلاثة إصلاحات.

1) تصحيح نظام التشغيل مع التحديث المناسب: http://www.catalog.update.microsoft.com/search.aspx؟q=kb4458166

2) إضافة إعداد إلى ملف app.config/web.config.

3) إضافة إعداد سجل تم ذكره بالفعل في إجابة أخرى.

كل هذه مذكورة في مقالة قاعدة المعرفة التي نشرتها.

يمكنك محاولة تثبيت شهادة تجريبية (يقدم بعض مزودي SSL مجانًا لمدة شهر) للتأكد مما إذا كانت المشكلة مرتبطة بصحة CERT أم لا.

طالما أن هذا رابط "مباشر" نسبيًا اعتقدت أنني سأضيف خيارًا جديدًا. هذا الاحتمال هو أن الخدمة لم تعد تدعم SSL 3.0 بسبب مشكلة هجوم البودل. تحقق من بيان Google حول هذا. واجهت هذه المشكلة مع العديد من خدمات الويب في وقت واحد وأدركت أن شيئًا ما يجب أن يحدث. لقد تحولت إلى TLS 1.2 وكل شيء يعمل مرة أخرى.

http://googleonlinesecurity.blogspot.com/2014/10/this-poodle-bites-exploiting-ssl-30.html

كان هذا يحدث بالنسبة لي على موقع واحد فقط ، واتضح أنه كان لديه فقط تشفير RC4. في جهد مسبق لتصلب الخادم ، قمت بتعطيل تشفير RC4 ، بمجرد إعادة تمكين هذه المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top