مقدمة في Let’s Encrypt

المقدمة

Let’s Encrypt هي سلطة شهادة مفتوحة وآلية تستخدم بروتوكول (بيئة إدارة الشهادات التلقائية) ACME لتوفير شهادات TLS/SSL مجانية لأي عميل متوافق. يمكن استخدام هذه الشهادات لتشفير التواصل بين خادم الويب الخاص بك ومستخدميك. هناك العديد من العملاء المتاحين، مكتوبة بلغات برمجة مختلفة، والعديد من التكاملات مع الأدوات الإدارية الشهيرة والخدمات والخوادم.

العميل الأكثر شهرة لـ ACME، Certbot، تم تطويره الآن من قبل مؤسسة الحدود الإلكترونية. بالإضافة إلى التحقق من ملكية النطاق وجلب الشهادات، يمكن لـ Certbot تكوين TLS/SSL تلقائيًا على كل من خوادم الويب Apache و Nginx.

ستتناول هذه الدورة التعليمية بإيجاز سلطات الشهادات وكيفية عمل Let’s Encrypt، ثم ستستعرض بعض العملاء الشهيرة لـ ACME.

ما هي سلطة الشهادة؟

السلطات الشهادة (CAs) هي كيانات توقع شهادات TLS/SSL بتوقيع رقمي لتصديق صحتها. لدى المتصفحات وأنظمة التشغيل قائمة بسلطات الشهادة الموثوقة التي يستخدمونها للتحقق من شهادات المواقع.

حتى وقت قريب، كانت معظم السلطات الشهادة تعمل كشركات تجارية تفرض رسومًا مالية على خدمات التحقق والتوقيع. جعلت Let’s Encrypt هذه العملية مجانية للمستخدمين من خلال أتمتة الإجراء بالكامل، وبالاعتماد على الرعاية والتبرعات لتمويل البنية التحتية اللازمة.

للمزيد من المعلومات حول الشهادات وأنواع مختلفة من السلطات الشهادة، يمكنك قراءة “مقارنة بين Let’s Encrypt والسلطات التجارية والخاصة للشهادات وشهادات SSL ذاتية التوقيع”.

فيما يلي، سنلقي نظرة على كيفية تحقق Let’s Encrypt للنطاقات بشكل آلي.

كيفية عمل Let’s Encrypt

بروتوكول ACME الخاص بـ Let’s Encrypt يحدد كيفية تفاعل العملاء مع خوادمها لطلب الشهادات، والتحقق من ملكية النطاق، وتحميل الشهادات. حاليًا، يجري عملية تحوله ليصبح معيارًا رسميًا من معايير IETF.

تقدم Let’s Encrypt شهادات التحقق من النطاق، مما يعني أنه يتعين عليهم التحقق من أن طلب الشهادة يأتي من شخص يتحكم فعليًا في النطاق. يقومون بذلك عن طريق إرسال رمز فريد إلى العميل، ثم إجراء طلب ويب أو DNS لاسترجاع مفتاح مشتق من ذلك الرمز.

على سبيل المثال، مع التحدي القائم على HTTP، سيقوم العميل بحساب مفتاح من الرمز الفريد ورمز الحساب، ثم وضع النتائج في ملف يتم تقديمه من قبل خادم الويب. ثم تسترجع خوادم Let’s Encrypt الملف على http://example.com/.well-known/acme-challenge/token. إذا كان المفتاح صحيحًا، فقد أثبت العميل أنه يمكنه التحكم في الموارد على example.com، وسيرد الخادم بتوقيع وإرجاع شهادة.

بروتوكول ACME يحدد عدة تحديات يمكن لعميلك استخدامها لإثبات ملكية النطاق. يتمثل التحدي HTTPS في تشابه HTTP، باستثناء أن العميل سيقوم بتوفير شهادة موقعة ذاتيًا مع المفتاح المضمن بدلاً من ملف نصي. يبحث التحدي DNS عن المفتاح في سجل DNS TXT.

عميل Certbot Let’s Encrypt

يعتبر Certbot بلا شك العميل الأكثر شهرة لـ Let’s Encrypt. يتم تضمينه في معظم توزيعات Linux الرئيسية، ويتضمن إمكانيات تكوين تلقائي مريحة لـ Apache و Nginx. بمجرد التثبيت، يمكن القيام بجلب شهادة وتحديث تكوين Apache الخاص بك بسهولة مثل هذا:

  1. sudo certbot --apache -d www.example.com

سيطلب Certbot بعض الأسئلة، وسيقوم بتشغيل التحدي، وتنزيل الشهادات، وتحديث تكوين Apache الخاص بك، وإعادة تحميل الخادم. بعد ذلك، يجب أن تكون قادرًا على التنقل إلى https://www.example.com باستخدام متصفح الويب الخاص بك. سيظهر قفل أخضر يشير إلى أن الشهادة صالحة والاتصال مشفر.

نظرًا لأن شهادات Let’s Encrypt صالحة لمدة تسعين يومًا فقط، من المهم إعداد عملية تجديد آلية. الأمر التالي سيجدد جميع الشهادات على الجهاز:

  1. sudo certbot renew

ضع الأمر أعلاه في crontab لتشغيله كل يوم، وسيتم تجديد الشهادات تلقائيًا قبل انتهائها بثلاثين يومًا. إذا تم إنشاء الشهادة بالأصل باستخدام خيارات --apache أو --nginx، سيقوم Certbot بإعادة تحميل الخادم بعد تجديد ناجح.

إذا كنت ترغب في معرفة المزيد حول cron و crontabs، يرجى الرجوع إلى البرنامج التعليمي “كيفية استخدام Cron لتلقيم المهام”.

العملاء الآخرون

نظرًا لأن بروتوكول ACME مفتوح وموثق بشكل جيد، فقد تم تطوير العديد من العملاء البديلة. تحتفظ Let’s Encrypt بقائمة بـ عملاء ACME على موقعها الإلكتروني. معظم العملاء الآخرين لا يحتوون على ميزات التكوين التلقائي لخادم الويب التي يوفرها Certbot، ولكن لديهم ميزات أخرى قد تعجبك:

  • هناك عميل مكتوب بأكثر لغة برمجة شيوعًا، بما في ذلك نصوص الشيل، جو، ونود. يمكن أن يكون هذا مهمًا إذا كنت تقوم بإنشاء شهادات في بيئة مقيدة وتفضل عدم تضمين بيثون وغيرها من تبعيات Certbot
  • يمكن لبعض العملاء العمل دون امتيازات root. عمومًا، من الفكرة الجيدة تشغيل أقل كمية من الكود ذو الامتيازات المطلوبة
  • يمكن للعديد من العملاء أتمتة التحدي المستند إلى DNS عن طريق استخدام واجهة برمجة التطبيقات الخاصة بموفر DNS لإنشاء السجل النصي (TXT) المناسب تلقائيًا. يتيح التحدي عبر DNS بعض الحالات الاستخدامية الأكثر صعوبة مثل تشفير خوادم الويب التي لا يمكن الوصول إليها عبر الإنترنت.
  • يتم دمج بعض العملاء فعليًا في خوادم الويب والوكلاء العكسية أو الموازنات الحمولة، مما يجعل من السهل جدًا تكوينها ونشرها

بعض العملاء الأكثر شهرة هي:

  • ليغو: مكتوب بلغة جو، ليغو هو تثبيت ثنائي ملف واحد، ويدعم العديد من موفري خدمة DNS عند استخدام التحدي عبر DNS
  • acme.sh: acme.sh هو نص شيل بسيط يمكن أن يعمل في وضع غير متميز، ويتفاعل أيضًا مع أكثر من 30 موفر خدمة DNS
  • كادي: كادي هو خادم ويب كامل مكتوب بلغة جو مع دعم مدمج لـ Let’s Encrypt.

هناك العديد من العملاء المتاحة، ويقوم العديد من الخوادم والخدمات الأخرى بتتميز إعداد TLS/SSL عن طريق دمج دعم Let’s Encrypt.

الختام

لقد تناولنا أساسيات كيفية عمل Let’s Encrypt، وناقشنا بعض البرمجيات العميل المتاحة. إذا كنت ترغب في تعلم تعليمات مفصلة حول استخدام Let’s Encrypt مع برمجيات مختلفة، فإليك الدروس التعليمية التالية مكانًا جيدًا للبدء:

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-let-s-encrypt