Skip to main content

المشكلة

عند تشغيل نص PowerShell يستخدم Invoke-WebRequest، قد يظهر الخطأ التالي:
Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.
يحدث هذا لأن النص يحاول الاتصال بخادم باستخدام بروتوكولات آمنة (TLS/SSL)، لكن البروتوكولات المطلوبة (مثل TLS 1.2) غير مفعّلة على النظام.
Image

الحلول

لإصلاح هذه المشكلة بسرعة في الجلسة الحالية، يمكنك تفعيل البروتوكولات الضرورية بتشغيل الأمر التالي في جلسة PowerShell:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls11 -bor ` [Net.SecurityProtocolType]::Tls12 -bor ` [Net.SecurityProtocolType]::Tls -bor ` [Net.SecurityProtocolType]::Ssl3
ومع ذلك، هذا الإصلاح مؤقت ويحتاج إلى إعادة تطبيقه في كل جلسة PowerShell جديدة.

شرح مفاتيح السجل

إعداد السجلالوصف
SchUseStrongCryptoيفرض على .NET Framework استخدام بروتوكولات تشفير قوية (مثل TLS 1.2).
SystemDefaultTlsVersionsيضمن استخدام تطبيقات .NET لإصدار TLS الافتراضي للنظام، مما يسمح لها بالتكيف مع البروتوكولات الأحدث.

إذا استمر الخطأ

إذا استمر الخطأ، فكر في الإجراءات التالية لضمان اتصالات آمنة لجميع تطبيقات .NET دون الحاجة إلى تدخل يدوي في كل جلسة:
  • تأكد من أن نظامك يدعم TLS 1.2 وأنه مفعّل في نظام التشغيل.
  • قم بالترقية إلى PowerShell Core أو PowerShell 7، اللذين يستخدمان البروتوكولات الأمنية الحديثة افتراضيًا.