bg-tutorials

كيفية إنشاء CSR على Postfix

يوضح لك هذا الدليل كيفية إنشاء CSR (طلب توقيع الشهادة) على Postfix باستخدام سطر أوامر OpenSSL. لا يقوم Postfix نفسه بإنشاء المفاتيح أو طلبات CSR؛ بل يستخدم الملفات التي ينتجها OpenSSL ويشير إليها من /etc/postfix/main.cf. تقوم بتشغيل أمر واحد ينشئ ملفين في آن واحد: مفتاح خاص يبقى على الخادم، وطلب CSR الذي تقدمه إلى جهة إصدار الشهادات (CA).

يشفّر طلب CSR اسم المضيف الذي يعرضه خادم MTA الخاص بك عند STARTTLS، وتفاصيل مؤسستك، والجزء العام من المفتاح. أما المفتاح الخاص المطابق فلا يغادر الخادم أبدًا. إذا فقدته، تصبح الشهادة الصادرة غير قابلة للاستخدام وعليك البدء من جديد.

المتطلبات الأساسية

  • صلاحية الوصول كجذر (root) أو عبر sudo إلى الخادم الذي يشغّل Postfix.
  • تثبيت OpenSSL. يأتي مدمجًا في النظام الأساسي لكل توزيعة Linux رئيسية؛ تحقق من ذلك باستخدام openssl version.
  • اسم المضيف الكامل المؤهل للبريد الذي تريد إدراجه في الشهادة، على سبيل المثال mail.example.com. يجب أن يطابق هذا سجل MX الذي يتصل به العملاء عبر STARTTLS، وليس النطاق الأساسي المجرد.

الخطوة 1: تحضير مجلد للمفتاح وطلب CSR

احتفظ بمواد TLS الخاصة بـ Postfix في مجلد منفصل ضمن /etc/postfix/ بحيث يسهل إدارة الأذونات. أنشئه واحصره على المستخدم root:

sudo mkdir -p /etc/postfix/ssl
sudo chmod 700 /etc/postfix/ssl
cd /etc/postfix/ssl

ستقوم بإنشاء المفتاح وطلب CSR داخل هذا المجلد، ثم الإشارة إليهما من main.cf بعد أن تصدر جهة إصدار الشهادات الشهادة.

الخطوة 2: إنشاء المفتاح الخاص وطلب CSR

نفّذ الأمر أدناه. فهو ينشئ المفتاح الخاص وطلب CSR في خطوة واحدة، ويتضمن اسم الموضوع البديل (SAN) الذي تتطلبه المتصفحات الحديثة وعملاء البريد وجهات إصدار الشهادات. يجب أن يدرج SAN اسم مضيف البريد (الذي يشير إليه سجل MX الخاص بك)، وليس النطاق الأساسي المجرد:

sudo openssl req -new -newkey rsa:2048 -nodes 
-keyout /etc/postfix/ssl/mail.example.com.key 
-out /etc/postfix/ssl/mail.example.com.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com" 
-addext "subjectAltName=DNS:mail.example.com"

إليك ما يفعله كل جزء:

  • req -new ينشئ طلب توقيع شهادة جديدًا.
  • -newkey rsa:2048 ينشئ مفتاحًا خاصًا جديدًا بطول 2048 بت من نوع RSA. يعتبر 2048 بت الحد الأدنى الحالي للشهادات العامة؛ يمكنك استخدام rsa:4096 للحصول على مفتاح أكبر.
  • -nodes يترك المفتاح الخاص غير مشفّر (بدون عبارة مرور)، بحيث يمكن لـ Postfix تحميله عند الإقلاع دون مطالبة.
  • -keyout يكتب المفتاح الخاص. حافظ على خصوصية هذا الملف ولا ترسله لأي أحد إطلاقًا، بما في ذلك جهة إصدار الشهادات.
  • -out يكتب طلب CSR الذي تقدمه إلى جهة إصدار الشهادات.
  • -subj يملأ حقول الموضوع مباشرة بحيث يعمل الأمر دون طلبات تفاعلية. اضبط CN (الاسم الشائع) على اسم مضيف البريد الخاص بك.
  • -addext “subjectAltName=…” يضيف إدخال SAN. تصدر جهات إصدار الشهادات بناءً على قائمة SAN، لذا يجب أن يظهر اسم مضيف البريد هنا.

استبدل mail.example.com باسم المضيف الفعلي الذي يتصل به العملاء (غالبًا نفس اسم سجل MX الخاص بك)، وحرّر قيم -subj لتطابق مؤسستك. يجب أن يكون رمز الدولة المكون من حرفين (C) بأحرف كبيرة، مثل US أو GB. بالنسبة للشهادة المُتحققة عبر النطاق (DV)، لا يتم التحقق من حقول المؤسسة، لكن الأمر ما زال بحاجة إلى قيم صالحة. يوقّع OpenSSL الحديث طلب CSR افتراضيًا باستخدام SHA-256، وهو ما تتطلبه كل جهة إصدار شهادات عامة.

إذا كنت تفضل ملء الحقول تفاعليًا بدلاً من استخدام -subj، احذف ذلك السطر وسيطلب منك OpenSSL كل قيمة على حدة:

sudo openssl req -new -newkey rsa:2048 -nodes 
-keyout /etc/postfix/ssl/mail.example.com.key 
-out /etc/postfix/ssl/mail.example.com.csr 
-addext "subjectAltName=DNS:mail.example.com"

عند المطالبة، اترك عبارة مرور التحدي (challenge password) واسم الشركة الاختياري فارغين بالضغط على مفتاح Enter. تتجاهل جهات إصدار الشهادات هذه الحقول، وعبارة مرور التحدي تسبب مشاكل لاحقًا.

تغطية أكثر من اسم مضيف واحد

إذا كان نفس نظام Postfix يستجيب لأكثر من اسم واحد (على سبيل المثال، كلاهما mail.example.com وsmtp.example.com، أو شهادة مشتركة للبريد والبريد الإلكتروني عبر الويب)، أدرج كل اسم مضيف في قيمة SAN، مفصولة بفواصل:

-addext "subjectAltName=DNS:mail.example.com,DNS:smtp.example.com,DNS:webmail.example.com"

يجب أن يظل الاسم الشائع هو اسم مضيف البريد الأساسي. إضافة النطاق الأساسي المجرد إلى SAN مفيدة فقط إذا كانت عملاء البريد تتصل به مباشرة في أي وقت؛ إذا كان سجل MX الخاص بك يشير إلى اسم مضيف فرعي، فلا تحتاج إلى النطاق الأساسي في الشهادة.

هل تفضل مفتاح ECDSA؟

مفاتيح ECDSA أصغر حجمًا وأسرع من RSA عند نفس مستوى الأمان، وهي مدعومة من قبل كل عملاء البريد وجهات إصدار الشهادات الحالية. لإنشاء مفتاح وطلب CSR من نوع P-256 (prime256v1) بدلاً من ذلك، استبدل وسيطة -newkey:

sudo openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout /etc/postfix/ssl/mail.example.com.key 
-out /etc/postfix/ssl/mail.example.com.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=mail.example.com" 
-addext "subjectAltName=DNS:mail.example.com"

الخطوة 3: حماية المفتاح الخاص

احصر إمكانية قراءة المفتاح الخاص على المستخدم root فقط. يفتح Postfix مواد TLS الخاصة به قبل إسقاط الصلاحيات، لذا فإن الملكية بواسطة root والوضع 600 كلاهما صحيح ومطلوب:

sudo chown root:root /etc/postfix/ssl/mail.example.com.key
sudo chmod 600 /etc/postfix/ssl/mail.example.com.key

ملف CSR ليس سريًا (فهو يحتوي فقط على المفتاح العام وتفاصيل موضوعك)، لكن الاحتفاظ به في نفس المجلد المحمي يبقي البنية منظمة.

الخطوة 4: التحقق من طلب CSR

قبل تقديم الطلب، تأكد من أنه يحتوي على اسم المضيف وSAN الصحيحين وأن توقيعه صالح. يعرض هذا الأمر المحتوى المفكوك ترميزه ويتحقق من التوقيع محليًا:

openssl req -noout -text -verify -in /etc/postfix/ssl/mail.example.com.csr

ابحث عن عبارة verify OK في الناتج، وتحقق من أن سطر Subject يعرض اسم مضيف البريد الخاص بك كاسم شائع، وتأكد من أن قسم X509v3 Subject Alternative Name يدرج كل اسم مضيف تتوقعه. إذا كان أحد أسماء SAN مفقودًا، أعد إنشاء طلب CSR بقيمة -addext الصحيحة: لا يمكن لجهة إصدار الشهادات إضافة أسماء مضيفين بعد الإصدار. يمكنك أيضًا لصق طلب CSR في أداة فك تشفير CSR الخاصة بنا عبر الإنترنت للتحقق من هذه الحقول في المتصفح.

الخطوة 5: تقديم طلب CSR

افتح ملف CSR وانسخ محتواه بالكامل، بما في ذلك سطري BEGIN وEND:

cat /etc/postfix/ssl/mail.example.com.csr

تبدو الكتلة على هذا الشكل. انسخ كل شيء من السطر الأول إلى السطر الأخير، بما في ذلك الشرطات الخمس على جانبي علامتي BEGIN وEND:

-----BEGIN CERTIFICATE REQUEST-----
MIIC...base64-encoded data...AB
-----END CERTIFICATE REQUEST-----

الصق تلك الكتلة في نموذج طلب شهادة SSL الخاص بك. بعد أن تتحقق جهة إصدار الشهادات من طلب CSR وتصدر الشهادة، اتبع تعليمات تثبيت شهادة SSL على Postfix لنشرها. احتفظ بملف .key على الخادم: فأنت بحاجة إليه جنبًا إلى جنب مع الشهادة الصادرة لخدمة STARTTLS، ويجب ألا ترسله إطلاقًا إلى جهة إصدار الشهادات أو لأي شخص آخر.

إذا كنت تفضل عدم استخدام سطر الأوامر، أنشئ الطلب باستخدام أداة إنشاء CSR الخاصة بنا والصق النتيجة في طلبك. تُرجع الأداة مفتاحًا خاصًا مطابقًا تضعه في نفس المسار على الخادم.

أين تذهب الملفات في Postfix

للتوضيح، إليك كيفية ربط الملفات التي أنشأتها للتو بـ Postfix بمجرد أن تعيد جهة إصدار الشهادات الشهادة والشهادة الوسيطة (حزمة CA). في الإصدار 3.4 من Postfix وما بعده، يأخذ النموذج الموصى به بتوجيه واحد ملف PEM واحد يحتوي على المفتاح الخاص متبوعًا بسلسلة الشهادات الكاملة:

cat mail.example.com.key mail.example.com.crt intermediate.pem 
> /etc/postfix/ssl/mail.example.com.chain.pem
sudo chmod 600 /etc/postfix/ssl/mail.example.com.chain.pem

ثم في /etc/postfix/main.cf:

smtpd_tls_chain_files = /etc/postfix/ssl/mail.example.com.chain.pem
smtpd_tls_security_level = may

في إصدارات Postfix الأقدم من 3.4، استخدم زوج التوجيهات القديم، مع الاحتفاظ بالمفتاح وشهادة السلسلة الكاملة في ملفين منفصلين:

smtpd_tls_cert_file = /etc/postfix/ssl/mail.example.com.fullchain.crt
smtpd_tls_key_file  = /etc/postfix/ssl/mail.example.com.key
smtpd_tls_security_level = may

يوجد الشرح الكامل للتثبيت، بما في ذلك خدمة التقديم على المنفذ 587 والتحقق باستخدام OpenSSL، في دليل تثبيت شهادة SSL على Postfix.

إنشاء طلب CSR على منصات بريد أخرى

هل تشغّل خادم بريد أو بوابة مختلفة؟ اطلع على أدلة CSR الأخرى الخاصة بنا:

وفِّر 10% على شهادات SSL عند الطلب اليوم!

إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10

صورة مفصلة لتنين أثناء طيرانه

كاتب محتوى متمرس متخصص في شهادات SSL. تحويل موضوعات الأمن السيبراني المعقدة إلى محتوى واضح وجذاب. المساهمة في تحسين الأمن الرقمي من خلال السرد المؤثر.