كيف تفعّل TLS المقاوم للكم (X25519MLKEM768) على nginx

آخر تحديث:

متصفح Chrome (منذ الإصدار 131) وFirefox يعرضان تبادل المفاتيح الهجين X25519MLKEM768 في كل اتصال HTTPS. إذا قبله خادمك فمفاتيح الجلسة محمية من أي حاسوب كمومي مستقبلي. وإذا لم يقبله يرجع المتصفح إلى X25519 العادي، ويمكن تسجيل حركة المرور اليوم وفك تشفيرها لاحقاً (احفظ الآن، فُكّ لاحقاً).

1. تحقق من إصدار OpenSSL

يأخذ nginx تشفير TLS من مكتبة OpenSSL التي بُني عليها. دعم ML-KEM وصل في OpenSSL 3.5.

nginx -V 2>&1 | grep -o 'OpenSSL [0-9.]*'
openssl version

إذا ظهر 3.0 أو 3.1 أو 3.2 أو 3.3 أو 3.4 فلن يستطيع nginx استخدام ML-KEM مهما كتبت في الإعدادات. Ubuntu 22.04 و24.04 يأتيان بـ OpenSSL 3.0، وDebian 13 (trixie) يأتي بـ 3.5. الحلول: ترقية النظام، أو نسخة nginx مبنية على OpenSSL 3.5، أو وضع وكيل أو CDN يدعم ما بعد الكم أمام الخادم (انظر دليل الخوادم الأخرى).

2. إعداد nginx

مع OpenSSL 3.5 تكون المجموعة X25519MLKEM768 ضمن القائمة الافتراضية، فالإعداد الافتراضي ssl_ecdh_curve auto يعرضها أصلاً. الخطأ الشائع هو قائمة منحنيات صريحة منسوخة من دليل حماية قديم تحذفها دون أن تشعر. اكتب القائمة صراحة وضع المجموعة الهجينة أولاً:

server {
    listen 443 ssl;
    http2 on;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ecdh_curve X25519MLKEM768:X25519:prime256v1;
    # ... الشهادات وبقية الإعدادات
}

ابحث أيضاً في الملفات المضمّنة مثل /etc/letsencrypt/options-ssl-nginx.conf عن سطر ssl_ecdh_curve آخر. ثم:

nginx -t && systemctl reload nginx

3. التحقق

باستخدام عميل OpenSSL 3.5:

openssl s_client -connect example.com:443 -groups X25519MLKEM768 </dev/null 2>/dev/null | grep -i group

يجب أن تظهر X25519MLKEM768 كمجموعة متفق عليها. أو شغّل الفحص المجاني: الدرجة A تعني TLS 1.3 مع تبادل مفاتيح هجين مقاوم للكم.

انتبه إلى

افحص موقعك الآن مجاناً