يوضح لك هذا الدليل كيفية إنشاء طلب توقيع شهادة CSR لخادم FileZilla Server. لنبدأ بالجزء الذي يوفر عليك أكبر قدر من الوقت: لا يمكن لخادم FileZilla Server إنشاء طلب توقيع شهادة. لا يوجد أي زر لذلك في أي مكان من واجهة الإدارة، في أي إصدار. يمكن للخادم إنشاء شهادة موقعة ذاتيًا، أو جلب شهادة تلقائيًا من Let’s Encrypt، أو تحميل شهادة ومفتاح خاص تقدمهما أنت، والخيار الثالث هو الذي تُدرَج فيه شهادة صادرة عن جهة إصدار شهادات تجارية. لذا يتم بناء الطلب خارج FileZilla Server، باستخدام OpenSSL أو باستخدام أداة إنشاء عبر الإنترنت، ولا يُسلَّم للخادم سوى المفتاح والشهادة النهائيين.
ملاحظة بخصوص الإصدارات قبل أن نصل إلى الأوامر، لأنها تحدد الطرفية التي ستفتحها. أُعيدت كتابة FileZilla Server بالكامل من أجل الإصدار 1.0 في سبتمبر 2021، والإصدار الحالي هو 1.12.6، الصادر في مايو 2026. وصلت حزم Debian وmacOS مع الإصدار 1.2.0 في ديسمبر 2021؛ قبل ذلك كان الخادم يعمل على Windows فقط، ولا يزال Windows هو المكان الذي تعيش فيه معظم التثبيتات. التعليمات القديمة التي تبدأ بـ “سجّل الدخول عبر SSH” تفترض ضمنيًا مضيف Linux. انتهى خط الإصدارات القديم 0.9.x بالإصدار 0.9.60.2 في فبراير 2017 ولم يتلقَّ أي تحديثات أمنية منذ ذلك الحين، لذا إذا كنت لا تزال تستخدمه، فخطط للترقية جنبًا إلى جنب مع الشهادة.
ما الذي يفعله FileZilla Server بالشهادات
يستحق الأمر معرفة الوجهة قبل بناء الطلب، لأن ذلك يخبرك بالشكل الذي يجب أن تكون عليه الملفات. افتح واجهة إدارة FileZilla Server، واتصل بالخادم، ثم اختر Server وConfigure… من شريط القوائم (اختصار لوحة المفاتيح هو Ctrl+F). في الشجرة الموجودة على اليسار، افتح Protocols settings، ثم FTP and FTP over TLS (FTPS)، ثم علامة التبويب Connection Security.
تحتوي هذه الصفحة على عنصرين: قائمة Minimum allowed TLS version التي تعرض الإصدارين v1.2 وv1.3، ومحدد TLS credentials بثلاثة خيارات لا غير:
- Provide a X.509 certificate and private key. حقلان، Certificate وPrivate key، يقبل كل منهما إما بيانات PEM خام تُلصَق مباشرة في الواجهة أو مسارًا إلى ملف على نظام ملفات الخادم. يقبل حقل المفتاح أيضًا عنوان PKCS#11 URL إذا كان المفتاح موجودًا على رمز أجهزة (hardware token). أسفل هذين الحقلين يوجد Private key password (stored in plaintext). هنا ينتهي المطاف بالشهادة الصادرة عن جهة الإصدار.
- Use a self-signed X.509 certificate. زر Generate new الذي ينشئ شهادة يوقّعها الخادم بنفسه. مفيد لاختبار مغلق، لكن لا يثق بها أي عميل، لذا يُنتج كل اتصال تحذيرًا.
- Use a Let’s Encrypt® certificate. دعم مدمج لبروتوكول ACME، أُضيف في FileZilla Server 1.0. يطلب الخادم الشهادة ويجدّدها بنفسه، دون أي طلب CSR عليك التعامل معه.
لا ينتج أي من الخيارات الثلاثة طلب توقيع شهادة يمكنك إرساله إلى جهة إصدار شهادات. يبني FileZilla Server طلبًا داخليًا كجزء من تبادل Let’s Encrypt، لكنه لا يُكتب أبدًا على القرص ولا يُعرَض في الواجهة، وهو مرتبط بذلك الطلب الآلي.
يستحق تفصيلان من تلك الشاشة أن تأخذهما إلى القسم التالي. أولًا، تُحلَّل حقول المسارات على الجهاز الذي يشغّل محرك الخادم، وليس على الجهاز الذي يشغّل واجهة الإدارة، وهذا مهم لأن الجهازين غالبًا ما يكونان حاسوبين مختلفين. ثانيًا، بما أن الواجهة تقبل أيضًا الشهادة والمفتاح كنص ملصوق، فلست مضطرًا تمامًا لنسخ ملفات إلى الخادم على الإطلاق. في كلتا الحالتين، يجب أن يصل المفتاح الخاص الذي أنت على وشك إنشائه إلى ذلك الجهاز بطريقة ما، وإنشاؤه هناك هو أبسط طريق.
إنشاء CSR لخادم FileZilla Server
إذا سبق لك إنشاء CSR، فتخطَّ هذا القسم وانتقل مباشرة إلى تثبيت شهادة SSL على FileZilla Server بمجرد إصدار الشهادة. وإلا، اختر أحد الطريقين أدناه. كلاهما ينتج نفس زوج الملفات.
الخيار 1: استخدام أداة SSL Dragon لإنشاء CSR
تبني أداة إنشاء CSR الخاصة بنا الطلب والمفتاح الخاص المطابق من نموذج واحد، مما يجنّبك تثبيت OpenSSL على خادم Windows لمجرد تشغيل أمر واحد. احفظ المفتاح الخاص الذي تنتجه واحتفظ به في مكان آمن. الشهادة التي تصدرها جهة الإصدار عديمة الفائدة بدونه، ولا يمكن لأحد أن يرسل لك بديلًا عنه.
الخيار 2: إنشاء CSR باستخدام OpenSSL
يعتمد المكان الذي تشغّل فيه الأمر على نظام التشغيل الذي يستضيف FileZilla Server:
- Windows. افتح موجه الأوامر Command Prompt أو PowerShell. لا يأتي Windows مع OpenSSL مثبتًا مسبقًا، لذا تحتاج إلى أحدها: يتضمن Git for Windows نسخة موجودة على المسار داخل Git Bash، أو يمكنك تثبيت حزمة OpenSSL مستقلة لنظام Windows، أو استخدام Windows Subsystem for Linux. أيًا كان اختيارك، شغّل
openssl versionأولًا وتأكد من أنه يستجيب. - Linux. افتح طرفية على الخادم، أو اتصل عبر SSH. يأتي OpenSSL مثبتًا افتراضيًا على التوزيعات الرئيسية.
- macOS. افتح Terminal. أمر
opensslعلى macOS هو نسخة مبنية من LibreSSL وليس OpenSSL، وهذا مهم لبعض الخيارات المذكورة أدناه. تم تشغيل كل أمر في هذا الدليل على كلا النسختين، وهو يعمل على كليهما.
انتقل إلى مجلد يمكنك العثور عليه لاحقًا، ثم شغّل هذا الأمر الواحد. إنه ينشئ المفتاح الخاص والطلب معًا:
openssl req -new -newkey rsa:2048 -nodes -keyout ftp.yourdomain.com.key -out ftp.yourdomain.com.csr -addext "subjectAltName=DNS:ftp.yourdomain.com"
ما يفعله كل جزء:
req -newينشئ طلب توقيع شهادة جديدًا.-newkey rsa:2048يولّد مفتاح RSA جديدًا بحجم 2048 بت في الوقت نفسه. هذا أصغر مفتاح توافق على توقيعه جهات الإصدار العامة. استخدمrsa:4096إذا كانت سياسة الأمان لديك تتطلب ذلك.-nodesيكتب المفتاح الخاص بدون عبارة مرور، حتى يتمكن FileZilla Server من قراءته دون تدخل بشري بعد إعادة التشغيل. استخدم هذه الصيغة وليس البديل الأحدث-noenc: يقبل OpenSSL 3.x كليهما، لكن نسخة LibreSSL التي يأتي بها macOS باسمopensslترفض-noencوتطبع رسالة الاستخدام بدلًا من التشغيل.-keyoutو-outيسميان ملفي الإخراج. تسميتهما باسم المضيف أفضل من server.key وserver.csr، لأنه بعد عام من الآن سيكون لديك عدة ملفات منها.-addext "subjectAltName=..."يضع اسم المضيف في امتداد Subject Alternative Name. لا تتخطَّ هذه الخطوة. تصف متطلبات الأساس الخاصة بـ CA/Browser Forum اسم Common Name الآن بأنه غير موصى به وتشترط أن تُشتق أي قيمة فيه من مدخلات SAN، لذا فإن قائمة SAN هي المرجعية.
لعدة أسماء مضيفين، أو لنطاق شامل (wildcard)، وسّع الخيار نفسه بقائمة مفصولة بفواصل. كرّر اسم Common Name داخلها:
-addext "subjectAltName=DNS:ftp.yourdomain.com,DNS:files.yourdomain.com"
-addext "subjectAltName=DNS:*.yourdomain.com,DNS:yourdomain.com"
إذا كنت تفضّل استخدام مفتاح منحنى إهليلجي (elliptic-curve)، فالأمر المكافئ أدناه. تحقق أولًا من أن جهة إصدار الشهادات لديك تصدر شهادات ECDSA للمنتج الذي تشتريه، إذ لا تفعل ذلك كل العلامات التجارية.
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes -keyout ftp.yourdomain.com.key -out ftp.yourdomain.com.csr -addext "subjectAltName=DNS:ftp.yourdomain.com"
الخيار الثاني -pkeyopt ليس زخرفة. على OpenSSL لا يغيّر شيئًا، لأن المنحنى المسمى (named curve) هو الافتراضي بالفعل، لكن في نسخة LibreSSL المرفقة مع macOS، غيابه يجعل الطلب يصف المنحنى بكتابة جميع معاملاته بدلًا من تسميته. يحظر RFC 5480 هذا الشكل في الشهادات العامة، والطلب المبني بهذه الطريقة لا يحدد أي منحنى على الإطلاق.
الإجابة على الأسئلة التفاعلية
يطلب OpenSSL الآن التفاصيل التي تدخل في الطلب، بهذا الترتيب:
- Country Name (2 letter code): الرمز المكوّن من حرفين لبلدك، على سبيل المثال US. إليك القائمة الكاملة لرموز الدول.
- State or Province Name (full name): مكتوبة بالكامل. California، وليس CA.
- Locality Name (eg, city): الاسم الكامل للمدينة، على سبيل المثال San Jose.
- Organization Name (eg, company): الاسم القانوني الدقيق لمؤسستك، على سبيل المثال Example Holding LLC. إذا كنت تشتري شهادة Domain Validation، فإن جهة الإصدار لا تتحقق من هذا الحقل ولا تستخدمه، لذا يمكن تركه فارغًا.
- Organizational Unit Name (eg, section): اتركه فارغًا. فمنذ 1 سبتمبر 2022، أدرجت متطلبات الأساس الخاصة بـ CA/Browser Forum هذه الخاصية ضمن ما يجب على جهات الإصدار عدم تضمينه، لذا سيتم تجاهل أي شيء تكتبه.
- Common Name: اسم المضيف المؤهل بالكامل الذي يتصل به عملاء FTPS، على سبيل المثال ftp.yourdomain.com، أو النطاق الشامل *.yourdomain.com. تختلف صياغة هذا السؤال قليلًا بين النسخ المختلفة، لكن في التهيئة الافتراضية هو السؤال السادس.
- Email Address: اختياري، ويُترك فارغًا عادةً.
- A challenge password: اتركه فارغًا. إنها خاصية قديمة تخص الطلب نفسه، ولا تصل أبدًا إلى الشهادة الصادرة، ونماذج طلب الشهادات لا تطلبها.
- An optional company name: اتركه فارغًا أيضًا.
فخ يستحق معرفته قبل أن تبدأ بالكتابة. “تركه فارغًا” لا يعني “الضغط على Enter”. تحمل عدة حقول قيمة افتراضية من ملف تهيئة OpenSSL، تُعرَض بين قوسين مربعين في نهاية السؤال، والضغط على Enter يقبل تلك القيمة الافتراضية بدلًا من ترك الحقل فارغًا. في تهيئة OpenSSL الافتراضية، أدى الضغط على Enter عبر الأسئلة القليلة الأولى إلى إنتاج طلب يقول C=AU وST=Some-State وO=Internet Widgits Pty Ltd، وهو ليس ما يريده أحد أن يُرسَل إلى جهة إصدار شهادات. لترك حقل فارغًا حقًا، اكتب نقطة واحدة واضغط Enter. يذكر OpenSSL ذلك في المقدمة التي يطبعها فوق الأسئلة مباشرة.
عند الإجابة عن السؤال الأخير، سيكون لديك ملفان جديدان في المجلد الحالي:
- ftp.yourdomain.com.csr: طلب توقيع الشهادة. هذا هو الملف الذي تلصقه في نموذج الطلب.
- ftp.yourdomain.com.key: المفتاح الخاص. لا يذهب أبدًا إلى جهة إصدار الشهادات ولا يغادر سيطرتك أبدًا. يمكن لأي شخص يمتلكه أن ينتحل شخصية خادمك، لذا قيّد من يمكنه قراءته واحتفظ بنسخة احتياطية منه في مكان ستظل تملك حق الوصول إليه بعد ثلاث سنوات. فقدانه يجعل الشهادة الصادرة غير قابلة للاستخدام: عليك إنشاء طلب جديد وطلب إعادة الإصدار.
تحقق من CSR قبل الطلب
خطأ إملائي في الطلب يعني أن جهة الإصدار تصدر شهادة لا يمكنك استخدامها، وإصلاحها يكلّف جولة تحقق أخرى. اقرأ الطلب مجددًا قبل تقديمه:
openssl req -noout -text -verify -in ftp.yourdomain.com.csr
تحقق من ثلاثة أشياء في المخرجات: يحمل سطر Subject التفاصيل التي قصدت إدخالها، ويسرد قسم Subject Alternative Name كل اسم مضيف سيستخدمه العملاء، ويجتاز فحص التوقيع. يبلغ OpenSSL 3.x عن الأخير بعبارة Certificate request self-signature verify OK، بينما تختصرها نسخة LibreSSL على macOS إلى verify OK. كلاهما يعني الشيء نفسه. إذا كنت تفضّل عدم العمل عبر سطر الأوامر، ألصق الطلب في أداة فك تشفير CSR الخاصة بنا بدلًا من ذلك.
يستحق الأمر أيضًا التأكد من أن المفتاح الموجود على القرص هو نفسه الذي بُني منه هذا الطلب، خاصة إذا أنشأت عدة مفاتيح. مقارنة المفاتيح العامة تعمل مع أي نوع مفتاح وعلى كلٍّ من OpenSSL وLibreSSL:
openssl req -noout -pubkey -in ftp.yourdomain.com.csr
openssl pkey -pubout -in ftp.yourdomain.com.key
يجب أن يكون الكتلتان متطابقتين، حرفًا بحرف. هذه هي النسخة المحمولة من مقارنة modulus-and-md5 الأكثر شهرة، والتي تعمل فقط مع مفاتيح RSA وتُبلّغ عن زوج منحنى إهليلجي سليم بأنه غير متطابق.
أخيرًا، افتح ملف .csr في محرر نصوص عادي مثل Notepad أو TextEdit وانسخ الكتلة بأكملها، بما في ذلك السطر الأول والأخير:
-----BEGIN CERTIFICATE REQUEST-----
MIICvDCCAaQCAQAwdzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWEx
... (many lines of base64) ...
-----END CERTIFICATE REQUEST-----
كل سطر علامة هو خمسة شرطات بالضبط، ثم الكلمات، ثم خمس شرطات أخرى. لا تعد كتابتها يدويًا ولا تلصقها عبر معالج نصوص، فقد يحوّل سلاسل الشرطات إلى شرطات طويلة وينتج طلبًا ترفضه جهة الإصدار باعتباره مشوّهًا.
عندما لا تحتاج إلى CSR على الإطلاق
منذ الإصدار 1.0، يمكن لـ FileZilla Server الحصول على شهادة Let’s Encrypt مجانية وتجديدها بنفسه، دون طلب عليك إنشاؤه ودون ملفات لاستيرادها. يحمل مربع حوار الإعدادات نفسه صفحة Let’s Encrypt® ذات المستوى الأعلى، أسفل Logging في الشجرة. حدد Enable Let’s Encrypt® certificate generation، وانقر على Create new account ووافق على شروط الخدمة، ثم اختر ضمن How to perform the challenges ما إذا كان يجب على FileZilla Server الإجابة عليها بخادم الويب الداخلي الخاص به (يقترح المنفذ 80 افتراضيًا) أو ما إذا كنت ستوجّهه إلى المجلد الذي يستخدمه خادم ويب موجود بالفعل للإجابة عن الطلبات ضمن /.well-known/acme-challenge/. بعد ذلك، اختر Use a Let’s Encrypt® certificate في علامة التبويب Connection Security واترك Automatically try to renew the certificate in due time محددًا.
يحدد قيدان مدى واقعية هذا الخيار بالنسبة لك. يجيب الخادم فقط على تحديات التحقق عبر HTTP، لذا يجب أن يكون اسم المضيف قابلًا للوصول من الإنترنت عبر منفذ التحدي أثناء إصدار الشهادة وفي كل مرة تُجدَّد فيها. ولأن شهادات النطاق الشامل من Let’s Encrypt تتطلب تحققًا قائمًا على DNS، وهو ما لا يقوم به FileZilla Server، فلا يمكنك الحصول على شهادة نطاق شامل بهذه الطريقة.
لذلك يظل مسار CSR أعلاه هو الطريق الذي يجب سلوكه إذا احتجت إلى شهادة نطاق شامل، أو شهادة Organization Validation أو Extended Validation، أو شهادة لخادم غير مكشوف على الإنترنت. تغطي دروسنا حول ACME الإصدار الآلي بمزيد من التفصيل. الخيار المتبقي، زر Generate new ضمن Use a self-signed X.509 certificate، مخصص للاختبار فقط: يجعل FTPS يعمل في ثوانٍ، ويجعل كل عميل يعرض تحذيرًا يتعلم المستخدمون بسرعة تجاوزه بالنقر.
الأسئلة الشائعة
لا. توفر واجهة الإدارة ثلاث طرق لمنح الخادم شهادة، ولا ينتج أي منها طلبًا يمكنك إرساله إلى جهة إصدار شهادات: تقديم شهادة ومفتاح خاص تملكهما بالفعل، أو إنشاء شهادة موقعة ذاتيًا، أو الحصول على واحدة تلقائيًا من Let’s Encrypt. أنشئ CSR باستخدام OpenSSL أو باستخدام أداة إنشاء CSR الخاصة بنا، ثم حمّل المفتاح الناتج والشهادة الصادرة عبر الخيار الأول من تلك الخيارات الثلاثة.
شغّل هذا على الجهاز الذي يستضيف FileZilla Server، مع استبدال اسم المضيف باسمك الخاص:openssl req -new -newkey rsa:2048 -nodes -keyout ftp.yourdomain.com.key -out ftp.yourdomain.com.csr -addext "subjectAltName=DNS:ftp.yourdomain.com"
إنه يكتب الطلب والمفتاح الخاص جنبًا إلى جنب ثم يطلب تفاصيل مؤسستك.
في Command Prompt أو PowerShell أو Git Bash على الخادم نفسه. لا يحتوي Windows على OpenSSL مدمج، لذا ثبّت واحدًا أولًا: يتضمن Git for Windows نسخة مناسبة، وتوجد أيضًا حزم مستقلة لنظام Windows. شغّل openssl version للتأكد من توفر الأمر قبل المتابعة. التعليمات التي تطلب منك الاتصال عبر SSH تفترض مضيف Linux، وهو ما لم يدعمه FileZilla Server إلا منذ الإصدار 1.2.0.
لا. تحتوي حزمة .pfx أو .p12 بالفعل على شهادة ومفتاحها الخاص، لذا لم يتبقَّ شيء لطلبه. لكنها في حاوية غير مناسبة: حقول الشهادة والمفتاح في FileZilla Server موثقة على أنها بصيغة PEM، ومربع اللصق يُشار إليه بأنه يتوقع PEM. قسّم الحزمة إلى ملفَي PEM اللذين يطلبهما الخادم، مع إدخال كلمة مرور الحزمة عند الطلب:openssl pkcs12 -in bundle.pfx -nokeys -out certificate.pemopenssl pkcs12 -in bundle.pfx -nocerts -nodes -out privatekey.pem
يخرج كلا الملفين بوجود بضعة أسطر Bag Attributes أعلى كل كتلة، وهي غير ضارة ويمكن تركها في مكانها أو حذفها.
لا. إنشاء طلب لا يفعل سوى كتابة ملفين على القرص ولا يغيّر شيئًا مما يقوم به الخادم. لا يعرف FileZilla Server بوجود الطلب حتى تحمّل الشهادة الصادرة، ويطبّق ذلك من علامة التبويب Connection Security دون إعادة تثبيت.
الطلب نفسه متطابق، لأنك تبنيه باستخدام OpenSSL في كلتا الحالتين. ما تغيّر هو المكان الذي تذهب إليه الملفات النهائية. وضعت واجهة إدارة 0.9.x إعدادات الشهادة تحت Edit وSettings، بينما تستخدم 1.x Server وConfigure… وعلامة التبويب Connection Security الموصوفة أعلاه. شهد خط 0.9.x آخر إصدار له في فبراير 2017 ولا يتلقى أي تحديثات أمنية، لذا تعامل مع أي عمل عليه على أنه مؤقت.
وفِّر 10% على شهادات SSL عند الطلب اليوم!
إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10


