مولّد شهادات SSL
الهوية
الشهادة
المفتاح الخاص (ابقه سريًا!)
الشهادات ذاتية التوقيع غير موثوقة افتراضيًا من المتصفحات: استخدمها فقط للتطوير المحلي أو الاختبار أو الشبكات الخاصة.
أنشئ شهادة موقّعة ذاتيًا للتطوير المحلي أو الاختبار الداخلي، مباشرةً داخل متصفحك. تختار حجم مفتاح RSA (2048 أو 3072 أو 4096 بت)، واسم Common Name، وأسماء Subject Alternative Names، ونافذة الصلاحية، وبيانات المؤسسة الأساسية. تُنشأ الشهادة ومفتاحها الخاص داخل متصفحك ولا تُرسل أبدًا إلى خادمنا، وتنزّل كليهما كملفات PEM جاهزة لـ Nginx أو Apache.
كيف يعمل توليد الشهادة
-
1
اختر حجم مفتاح RSA
2048 بت كافٍ لمعظم الاختبارات؛ ويمنح 3072 أو 4096 مفتاحًا أكبر على حساب السرعة.
-
2
أدخل الموضوع وأسماء SAN
اسم Common Name بالإضافة إلى كل اسم مضيف أو IP ينبغي أن تغطّيه الشهادة (تتجاهل المتصفحات الحديثة CN وتعتمد على SAN).
-
3
أنشئ داخل المتصفح
تُنشأ شهادة موقّعة ذاتيًا وتُوقَّع بالمفتاح الخاص المطابق، كل ذلك محليًا داخل متصفحك.
-
4
نزّل الناتج
شهادة مُرمَّزة بصيغة PEM (`cert.pem`) والمفتاح الخاص بصيغة PEM (`key.pem`)، جاهزان للتثبيت.
كل شيء يحدث داخل متصفحك
يعمل هذا المولّد بالكامل داخل متصفحك. يُنشأ زوج مفاتيح RSA محليًا بمكتبة تشفير JavaScript، وتُوقَّع الشهادة على جهازك، ولا يُرفع إلى خادمنا أبدًا لا المفتاح الخاص ولا الشهادة. ومع ذلك، عامِل المفتاح الخاص كسرّ: فمن يملكه يستطيع انتحال الشهادة.
ماذا يعني موقّعة ذاتيًا
أنت المُصدِر والموضوع في آنٍ واحد: تُوقَّع الشهادة بمفتاحها الخاص، فلا تضمنها أي جهة تصديق (CA) عامة. ولذلك تعرض المتصفحات تحذيرًا. وهي صالحة للاختبار والتطوير المحلي (localhost وdev.local) والخوادم الداخلية حيث يمكنك توزيع الشهادة على العملاء الذين يحتاجون إلى الوثوق بها.
إذا كنت تحتاج إلى شهادة يثق بها الإنترنت العام، فهذه الأداة ليست الخطوة المناسبة: تحتاج إلى شهادة موقّعة من CA (مثل Let’s Encrypt أو CA مدفوعة)، وهو ما يتطلّب طلب توقيع شهادة (CSR) والتحقق من النطاق، وهما ما لا تنفّذه هذه الأداة داخل المتصفح.
ماذا يوجد داخل الشهادة
| الحقل | ملاحظات |
|---|---|
| الموضوع (CN، O، C) | Common Name والمؤسسة والدولة |
| Subject Alternative Names | كل نطاق أو IP مُغطّى (بالغ الأهمية!) |
| المفتاح العام | RSA، مُشتق من المفتاح الخاص المُولَّد |
| الجهة المُصدِرة | نفس الموضوع، لأنها موقّعة ذاتيًا |
| الصلاحية | Not Before / Not After (أيام صلاحيتك) |
| Key Usage | digitalSignature وkeyEncipherment |
| Extended Key Usage | serverAuth وclientAuth |
| Basic Constraints | CA:FALSE (شهادة طرفية، لا CA) |
ملفات المخرجات
key.pem، المفتاح الخاص (احمِه، الوضع 0600)cert.pem، الشهادة الموقّعة ذاتيًا (عامة، قابلة للتوزيع)
لـ Nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}
لـ Apache 2.4+
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
SSLCertificateKeyFile /etc/ssl/private/key.pem
</VirtualHost>
الوثوق بالشهادة على أجهزتك الخاصة
لإسكات تحذير المتصفح على جهاز تتحكم به، استورد cert.pem إلى مخزن الثقة في ذلك النظام أو المتصفح. افعل ذلك فقط للشهادات التي أنشأتها بنفسك، وعلى الأجهزة التي تملكها. تُؤتمِت أدوات مثل mkcert إنشاء CA محلية لعدة خدمات؛ أما هذا المولّد فينتج شهادة موقّعة ذاتيًا واحدة في كل مرة.
ما لا تصلح له الشهادة الموقّعة ذاتيًا
- المواقع العامة. يرى المستخدمون تحذيرًا، ويغادر كثيرون.
- تكاملات واجهات برمجة التطبيقات لأطراف خارجية. يرفض معظم العملاء الجهات المُصدِرة المجهولة.
- الإنتاج. قطعًا لا. استخدم Let’s Encrypt (مجانًا) أو CA مدفوعة لأي شيء على الإنترنت المفتوح.
الأسئلة الشائعة
لا. يُولَّد زوج المفاتيح والشهادة داخل متصفحك ويبقيان على جهازك؛ ولا يُرفع أي شيء. ومع ذلك، احتفظ بملف key.pem المُنزَّل خاصًا، لأن من يملكه يستطيع انتحال الشهادة.
لا، إذا كان سيتصل بها أطراف خارجية. تعرض المتصفحات تحذيرًا واضحًا. استخدم شهادة موقّعة من CA مجانية (Let’s Encrypt وZeroSSL) أو مدفوعة. تصلح الموقّعة ذاتيًا للاتصال بين آلة وأخرى داخل شبكة داخلية تتحكم فيها بالطرفين.
كان CN تاريخيًا يحمل النطاق الأساسي. تتجاهل المتصفحات الحديثة CN عند التحقق من المضيف وتعتمد على SAN وحدها. ضع دائمًا كل اسم مضيف في SAN؛ واجعل CN هو النطاق الأساسي فقط لغرض التعريف المقروء.
نعم، ضع *.example.com في أسماء SAN. تغطّي مستوى واحدًا من النطاقات الفرعية. ولعدة مستويات، أضف عدة أحرف بدل (*.example.com و*.dev.example.com).
أدوات ذات صلة
مشفر ملفات Base64
شفّر أي ملف (PDF، ZIP، صورة، ملف تنفيذي) إلى نص Base64 للتضمين في JSON أو البريد أو YAML أو data URIs. يعمل محليا، بلا رفع.
مشفّر قيصر
شفّر وفك تشفير النص باستخدام شفرة قيصر. أي إزاحة من 1-25، مع دعم ROT13 كحالة خاصة، والحفاظ على علامات الترقيم وحالة الأحرف.
مولد Hash bcrypt
ولّد hashes من نوع bcrypt أو تحقق من كلمة مرور نصية مقابل hash bcrypt موجود. وضعا التوليد والتحقق جنبا إلى جنب في أداة واحدة.
مرمز شفرة A1Z26
رمز النص باستخدام شفرة A1Z26 (A=1, B=2, ... Z=26) أو فك تسلسل أرقام إلى حروف، مع فاصل قابل للتخصيص.
مولد bcrypt
ولّد hash من نوع bcrypt لكلمة مرور نصية. عامل cost قابل للضبط من 4 إلى 13، ومتوافق مع Laravel وDjango وNode وPHP.
مشفر شفرة Atbash
شفّر النص أو فك تشفيره باستخدام شفرة Atbash، وهي استبدال عبري يطابق A-Z مع Z-A. العملية نفسها تشفر وتفك التشفير.