انتقل إلى المحتوى الرئيسي
شهادات SSL من DigiCert وSectigo وGeoTrust
+90 850 259 76 06 WhatsApp الدعم كن موزّعًا
شهادات SSL
العلامات التجارية
توقيع الكود رمز LEI
أدوات
الدعم اتصل بنا WhatsApp السلة
اللغة
العملة
الحصول على شهادة SSL
أمان SSL

خطأ HSTS ودليل إعداد Strict-Transport-Security

أخطاء HSTS (HTTP Strict Transport Security) ومشكلات الإعداد الخاطئ وانتهاء الصلاحية، مع شرح HSTS preload وإعدادات max-age وحلول الأخطاء الشائعة.

9 دقيقة قراءة

ما هو HSTS؟

HSTS (HTTP Strict Transport Security) آلية أمان يوجّه بها الموقع المتصفحَ بأن "يتصل بهذا الموقع عبر HTTPS فقط". في الموقع الذي فُعِّل فيه HSTS يرقّي المتصفح محاولات الاتصال عبر HTTP إلى HTTPS تلقائيًا، فلا يصل إلى الخادم أي طلب HTTP أصلًا.

كيف يعمل HSTS؟

  1. يزور المتصفح موقعك أول مرة عبر HTTPS
  2. يرسل الخادم ترويسة Strict-Transport-Security
  3. يحفظ المتصفح هذه المعلومة طوال مدة max-age
  4. في الزيارات التالية تُرقّى روابط HTTP تلقائيًا إلى HTTPS
# Temel HSTS header
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

أخطاء HSTS الشائعة

الخطأ 1: ERR_SSL_PROTOCOL_ERROR (بسبب HSTS)

إذا انتهت صلاحية شهادة SSL أو حدثت فيها مشكلة و HSTS مفعَّل، فإن المتصفح يرفض فتح الموقع عبر HTTP أيضًا. وبخلاف خطأ SSL العادي، لا يرى المستخدم خيار "المتابعة على أي حال".

الحل

  • جدّد شهادة SSL فورًا — فالبقاء بلا شهادة مع وجود HSTS يجعل الموقع غير قابل للوصول تمامًا
  • يمكنك في Chrome حذف سجل HSTS الخاص بالنطاق من العنوان chrome://net-internals/#hsts (في متصفحك أنت فقط)

الخطأ 2: لا يوجد SSL على النطاقات الفرعية مع تفعيل includeSubDomains

التوجيه includeSubDomains يفرض HTTPS على جميع النطاقات الفرعية. فإذا لم يكن على أحد النطاقات الفرعية SSL صار ذلك النطاق الفرعي غير قابل للوصول.

الحل

  • ثبّت شهادة SSL على جميع النطاقات الفرعية (دفعة واحدة باستخدام Wildcard SSL)
  • أو احذف التوجيه includeSubDomains

الخطأ 3: إرسال HSTS من صفحة HTTP

ترويسة HSTS لا تكون صالحة إلا في استجابات HTTPS. أما HSTS المرسَلة في استجابة HTTP فتتجاهلها المتصفحات.

الإعداد الصحيح

# Nginx
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;  # Önce HTTPS'e yönlendir
}

server {
    listen 443 ssl;
    server_name example.com;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;  # HSTS burada
}

الخطأ 4: قيمة max-age قصيرة جدًا أو صفر

القيمة max-age=0 تعطّل HSTS. والمدد القصيرة جدًا (بضع ساعات) تُضعف الأمان.

الإعدادات الموصى بها

المرحلةmax-ageالوصف
الاختبار300 (5 دقائق)اختبار آمن عند الإعداد الأول
الانتقال604800 (أسبوع واحد)ارفع القيمة إذا لم تظهر مشكلات
الإنتاج31536000 (سنة واحدة)القيمة القياسية لبيئة الإنتاج
Preload31536000+ (سنة أو أكثر)الحد الأدنى لقائمة HSTS preload

ما هو HSTS Preload؟

يضيف HSTS Preload نطاقك إلى قائمة HSTS المضمَّنة في Chrome (وفي المتصفحات الأخرى). وبذلك لا تُجرى أي محاولة اتصال عبر HTTP حتى في الزيارة الأولى.

متطلبات Preload

  • شهادة SSL صالحة
  • إعادة توجيه HTTP → HTTPS
  • قيمة max-age لا تقل عن 31536000 (سنة واحدة)
  • التوجيه includeSubDomains
  • التوجيه preload

التقديم: يمكنك إرسال نطاقك عبر العنوان hstspreload.org.

⚠️ تحذير: الخروج من قائمة HSTS preload قد يستغرق شهورًا. لا تتقدم بالطلب قبل أن تكون متأكدًا.

تعطيل HSTS

لتعطيل HSTS في الحالات الطارئة:

# أرسل max-age=0
add_header Strict-Transport-Security "max-age=0" always;
# ستحذف المتصفحات سجل HSTS عند زيارتها التالية للموقع عبر HTTPS

إعداد HSTS بحسب الخادم

# Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

# Apache (.htaccess أو VirtualHost)
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

# IIS (web.config)
<customHeaders>
    <add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />
</customHeaders>

الخلاصة

HSTS آلية قوية ترفع أمان موقعك بدرجة كبيرة. لكنها قد تسبّب مشكلات في الوصول إذا لم تُضبط بالشكل الصحيح. قبل تفعيل HSTS تأكد من وجود شهادة SSL على جميع النطاقات الفرعية، وارفع قيمة max-age تدريجيًا، واختبر إعدادك جيدًا قبل الإضافة إلى قائمة preload.

شارك هذه المقالة
Ali Yiğit
Yazar

Ali Yiğit