في هذا الدرس، ستتعلم كيفية تثبيت شهادة SSL على Node.js باستخدام وحدة https المدمجة. على عكس خادم الويب مثل Apache أو Nginx، يقوم Node.js بتحميل شهادتك، والمفتاح الخاص، وسلسلة CA مباشرة في JavaScript، لذا فإن “التثبيت” يحدث داخل كود تطبيقك.
إنشاء كود CSR في Node.js
إذا لم تكن قد تقدمت بطلب للحصول على شهادة SSL بعد، فأنت تحتاج أولاً إلى إنشاء CSR (طلب توقيع الشهادة). CSR هو كتلة نصية مشفرة صغيرة تحتوي على تفاصيل الاتصال بك ومفتاحك العام، وتقدمها إلى جهة إصدار الشهادات عند الطلب. لديك خياران:
- إنشاء CSR تلقائياً باستخدام مولد CSR الخاص بنا.
- اتبع درسنا التفصيلي حول كيفية إنشاء CSR في Node.js.
قدّم CSR إلى جهة إصدار الشهادات أثناء طلبك. بعد أن تتحقق جهة إصدار الشهادات منه وتصدر شهادة SSL الخاصة بك، استمر في التثبيت أدناه.
تثبيت شهادة SSL على Node.js
الخطوة 1: تحضير ملفات شهادتك
بعد التحقق، ترسل جهة إصدار الشهادات ملفات الشهادة إليك عبر البريد الإلكتروني. استخرج الأرشيف. يجب أن يكون لديك:
- yourdomain.crt، شهادة نطاقك الأساسية.
- yourdomain.ca-bundle، الشهادات الوسيطة (والجذرية) التي تشكل حزمة CA.
- yourdomain.key، المفتاح الخاص الذي أنشأته مع CSR.
يجب أن تستقبل المتصفحات السلسلة الوسيطة، لا شهادة نطاقك فقط، وإلا ستقوم بعض العملاء برفض الاتصال. الطريقة الأنظف لتقديم السلسلة في Node.js هي دمج شهادتك وحزمة CA في ملف سلسلة كاملة (full-chain) واحد:
cat yourdomain.crt yourdomain.ca-bundle > fullchain.crt
ضع ملفي fullchain.crt و yourdomain.key في مكان يمكن لتطبيقك قراءته، واحتفظ بالمفتاح الخاص قابلاً للقراءة فقط من المستخدم الذي يشغّل Node.js.
الخطوة 2: إنشاء خادم HTTPS في Node.js
أنشئ ملف خادم. لهذا العرض التوضيحي، نسميه https_server.js، لكن يمكنك استخدام أي اسم ملف. يستخدم المثال أدناه CommonJS (require)، الذي يعمل في كل إصدار مدعوم من Node.js. استبدل المسارات بالخط العريض بمساراتك الخاصة:
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
// Recommended TLS hardening (2026): never negotiate below TLS 1.2
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
تحتاج إلى استبدال الأجزاء بالخط العريض بمعلوماتك الخاصة:
- /path/to/private.key: المسار الكامل إلى ملف مفتاحك الخاص.
- /path/to/fullchain.crt: المسار الكامل إلى ملف السلسلة الكاملة الذي أنشأته في الخطوة 1.
ملاحظة حول المنفذ: يستخدم HTTPS المنفذ 443 بشكل افتراضي. يتطلب الارتباط به صلاحيات مرتفعة، لذا خلف بروكسي عكسي أو في بيئة التطوير، قد تفضل منفذاً مرتفعاً مثل 8443. فقط قم بتغيير القيمة الممررة إلى listen().
تفضل وحدات ES؟ إذا كان مشروعك يستخدم "type": "module" في package.json (أو ملف .mjs)، استخدم صياغة import بدلاً من ذلك. خيارات TLS متطابقة:
import https from 'node:https';
import fs from 'node:fs';
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
بديل: تمرير السلسلة مع خيار ca:. إذا كنت تفضل الاحتفاظ بالملفات منفصلة بدلاً من بناء ملف سلسلة كاملة، اترك cert يشير إلى شهادة نطاقك وقدّم الشهادات الوسيطة عبر مصفوفة ca:
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/yourdomain.crt'),
ca: [
fs.readFileSync('/path/to/intermediate.crt'),
fs.readFileSync('/path/to/ca_bundle.crt')
],
minVersion: 'TLSv1.2'
};
تستخدم Express؟ مرّر app الخاص بـ Express كمعالج للطلبات. تبقى خيارات الشهادة على حالها تماماً:
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
app.get('/', (req, res) => res.send('Hello over HTTPS'));
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, app).listen(443);
الخطوة 3: تشغيل خادم HTTPS الخاص بك في Node.js
شغّل الأمر التالي لبدء تشغيل التطبيق:
node https_server.js
يقدم تطبيقك الآن حركة المرور عبر HTTPS. لعملية نشر إنتاجية، شغّله ضمن مدير عمليات (مثل PM2 أو خدمة systemd) بحيث يعيد التشغيل تلقائياً وينجو من إعادة تشغيل النظام.
الخطوة 4: اختبار تثبيت شهادة SSL
اختبر تثبيت شهادة SSL للتحقق من الأخطاء أو الثغرات المحتملة باستخدام إحدى أدوات فحص SSL الخاصة بنا. يمكنك أيضاً تأكيد السلسلة من سطر الأوامر:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
يعرض هذا الأمر جهة إصدار الشهادة وتواريخ صلاحيتها، مؤكداً أن خادم Node.js الخاص بك يعرض الشهادة الصحيحة.
من أين تشتري شهادة SSL لـ Node.js؟
SSL Dragon هو مصدرك لجميع احتياجات SSL الخاصة بك. نقدم بعض أدنى الأسعار في السوق عبر مجموعتنا الكاملة من منتجات SSL، وقد تعاونا مع أفضل العلامات التجارية لـ SSL في الصناعة لتحقيق أمان قوي ودعم متخصص. جميع شهادات SSL الخاصة بنا متوافقة تماماً مع تطبيقات Node.js.
إصدار سريع، تشفير قوي، ثقة متصفحات بنسبة 99.99%، دعم متخصص، وضمان استرداد الأموال لمدة 25 يوماً.
الأسئلة الشائعة
استخدم وحدة https المدمجة. اقرأ مفتاحك الخاص وشهادة السلسلة الكاملة باستخدام fs.readFileSync()، ومرّرهما كخياري key و cert إلى https.createServer()، واستدعِ .listen(443). يتولى Node.js عملية التفاوض على TLS من أجلك؛ لا يوجد خادم ويب منفصل لتهيئته.
تحتاج إلى تقديم السلسلة الوسيطة، ولكنك لا تحتاج بالضرورة إلى خيار ca للقيام بذلك. أبسط طريقة هي دمج شهادة نطاقك وحزمة CA في ملف سلسلة كاملة واحد وتوجيه cert إليه. استخدم مصفوفة ca فقط إذا كنت تفضل الاحتفاظ بالشهادة والشهادات الوسيطة في ملفات منفصلة.
على Linux وmacOS، تكون المنافذ الأقل من 1024 منافذ مميزة (privileged). يتطلب الارتباط المباشر بالمنفذ 443 صلاحيات مرتفعة، وهذا هو السبب في أن كثيراً من الإعدادات تشغّل Node.js على منفذ مرتفع مثل 8443 خلف بروكسي عكسي (Nginx أو موزّع أحمال) يقوم بإنهاء أو إعادة توجيه TLS. للتطوير، فقط قم بتغيير القيمة الممررة إلى listen().
نعم. يعمل CommonJS (require) في كل إصدار مدعوم من Node.js، ولكن إذا كان مشروعك مهيئاً كوحدة ES (“type”: “module” في package.json أو ملف .mjs)، يمكنك استخدام import https from ‘node:https’ بدلاً من ذلك. خيارات TLS متطابقة في الحالتين.
افتح موقعك في متصفح وتحقق من وجود القفل، أو شغّله من خلال أدوات فحص SSL الخاصة بنا، أو استعلم عنه من الطرفية باستخدام echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com لفحص الشهادة التي يعرضها الخادم.
خلاصة القول
يتلخص تثبيت شهادة SSL على Node.js في بناء شهادة سلسلة كاملة، وقراءتها ومفتاحك الخاص باستخدام fs.readFileSync()، وتمريرهما إلى https.createServer() مع minVersion: ‘TLSv1.2’، وتشغيل التطبيق باستخدام node https_server.js.
تحتاج إلى شهادة أولاً؟ تصفح شهادات SSL الخاصة بنا.
وفِّر 10% على شهادات SSL عند الطلب اليوم!
إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10


