> ## Documentation Index
> Fetch the complete documentation index at: https://help.gorelo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# تعذّر إنشاء قناة آمنة SSL/TLS

> أصلح خطأ PowerShell 'Could not create SSL/TLS secure channel' عن طريق تفعيل TLS 1.2 في جلستك أو على مستوى النظام للنصوص المعتمدة على Invoke-WebRequest.

## المشكلة

عند تشغيل نص PowerShell يستخدم `Invoke-WebRequest`، قد يظهر الخطأ التالي:

```powershell theme={null}
Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.
```

يحدث هذا لأن النص يحاول الاتصال بخادم باستخدام بروتوكولات آمنة (TLS/SSL)، لكن البروتوكولات المطلوبة (مثل TLS 1.2) غير مفعّلة على النظام.

<Frame>
  <img src="https://mintcdn.com/gorelo/k9Vf68jFwh3yoHvE/images/image-168.png?fit=max&auto=format&n=k9Vf68jFwh3yoHvE&q=85&s=6777e83ac2b24818bbb93b26b91317a6" alt="Image" width="1527" height="248" data-path="images/image-168.png" />
</Frame>

## الحلول

<Tabs>
  <Tab title="مؤقت">
    لإصلاح هذه المشكلة بسرعة في الجلسة الحالية، يمكنك تفعيل البروتوكولات الضرورية بتشغيل الأمر التالي في جلسة PowerShell:

    ```powershell theme={null}
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls11 -bor ` [Net.SecurityProtocolType]::Tls12 -bor ` [Net.SecurityProtocolType]::Tls -bor ` [Net.SecurityProtocolType]::Ssl3
    ```

    ومع ذلك، هذا الإصلاح مؤقت ويحتاج إلى إعادة تطبيقه في كل جلسة PowerShell جديدة.
  </Tab>

  <Tab title="دائم">
    لحل هذه المشكلة بشكل دائم وضمان استخدام جميع التطبيقات المعتمدة على .NET، بما في ذلك PowerShell، للبروتوكولات الآمنة افتراضيًا، قم بتحديث سجل النظام.

    ### خطوات الإصلاح:

    1. افتح **جلسة PowerShell مرتفعة الصلاحيات** (Run as Administrator).
    2. شغّل الأوامر التالية لتحديث السجل:

    ```powershell theme={null}
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord 
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
    ```

    3. طبّق التغييرات أيضًا على مفتاح سجل .NET Framework 64 بت:

    ```text theme={null}
    Set-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord 
    Set-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
    ```

    4. أعد تشغيل النظام لضمان دخول التغييرات حيز التنفيذ.
  </Tab>
</Tabs>

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

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

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

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

* تأكد من أن نظامك يدعم TLS 1.2 وأنه مفعّل في نظام التشغيل.

* قم بالترقية إلى PowerShell Core أو PowerShell 7، اللذين يستخدمان البروتوكولات الأمنية الحديثة افتراضيًا.
