تمديد الدرس الأخير دليل تشفير Let’s Encrypt بخصوص شهادات SSL/TLS المجانية، في هذا المقال سنقوم بشرح كيفية الحصول على شهادات SSL/TLS المجانية وتثبيتها التي تصدرها سلطة تشفير Let’s Encrypt لخادم الويب Apache على توزيعات CentOS/RHEL 7/6 و Fedora أيضًا.
إذا كنت ترغب في تثبيت Let’s Encrypt لـ Apache على Debian و Ubuntu، اتبع الدليل أدناه:
إعداد Let’s Encrypt لتأمين Apache على Debian و Ubuntu
بيئة الاختبار

المتطلبات
- A registered domain name with valid
A
records to point back to your server public IP Address. - يجب أن يكون خادم Apache مثبتًا مع وحدة SSL ممكّنة وتمكين الاستضافة الافتراضية في حال كنت تستضيف نطاقات أو نطاقات فرعية متعددة.
الخطوة 1: تثبيت خادم الويب Apache
1. إذا لم يكن مثبتًا بالفعل، يمكن تثبيت خدمة httpd عبر إصدار الأمر التالي:
# yum install httpd
2. لضمان عمل برنامج Let’s Encrypt مع Apache، تأكد من تثبيت وحدة SSL/TLS عبر إصدار الأمر التالي:
# yum -y install mod_ssl
3. أخيرًا، قم بتشغيل خادم Apache بالأمر التالي:
# systemctl start httpd.service [On RHEL/CentOS 7] # service httpd start [On RHEL/CentOS 6]
الخطوة 2: تثبيت شهادة Let’s Encrypt SSL
٤. أبسط طريقة لتثبيت عميل Let’s Encrypt هي عن طريق استنساخ مستودع github في نظام الملفات الخاص بك. لتثبيت git على نظامك يجب عليك تمكين مستودعات Epel باستخدام الأمر التالي.
# yum install epel-release
٥. بمجرد أن يتم إضافة مستودعات Epel في نظامك، قم بتثبيت عميل git عن طريق تشغيل الأمر التالي:
# yum install git
٦. الآن، بمجرد أن تكون قد قمت بتثبيت جميع التبعيات المطلوبة للتعامل مع Let’s Encrypt، انتقل إلى الدليل /usr/local/
وابدأ في استحضار عميل Let’s Encrypt من مستودع github الرسمي باستخدام الأمر التالي:
# cd /usr/local/ # git clone https://github.com/letsencrypt/letsencrypt
الخطوة ٣: الحصول على شهادة SSL مجانية من Let’s Encrypt لـ Apache
٧. عملية الحصول على شهادة Let’s Encrypt مجانية لـ Apache مؤتمتة لـ CentOS/RHEL بفضل إضافة apache.
لنقم بتشغيل أمر النص البرمجي Let’s Encrypt للحصول على شهادة SSL. انتقل إلى دليل تثبيت Let’s Encrypt من /usr/local/letsencrypt
وقم بتشغيل الأمر letsencrypt-auto
عن طريق تقديم الخيار --apache
والعلم -d
لكل نطاق فرعي تحتاج إلى شهادة.
# cd /usr/local/letsencrypt # ./letsencrypt-auto --apache -d your_domain.tld

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

٩. وافق على شروط الترخيص عن طريق الضغط على مفتاح Enter.

١٠. على CentOS/RHEL، بشكل افتراضي، لا يستخدم خادم Apache مفهوم فصل الدلائل للمضيفين الممكّنين عن المضيفين المتاحين (غير النشطين) كما تفعل توزيعات Debian.
أيضًا، يتم تعطيل الاستضافة الافتراضية بشكل افتراضي. البيان في Apache الذي يحدد اسم الخادم (ServerName) ليس موجودًا في ملف تكوين SSL.
لتنشيط هذا التوجيه، سيطلب منك Let’s Encrypt اختيار مضيف افتراضي. نظرًا لعدم وجود أي مضيف افتراضي متاح، حدد ملف ssl.conf
ليتم تعديله تلقائيًا بواسطة عميل Let’s Encrypt واضغط Enter للمتابعة.

١١. بعد ذلك، اختر الطريقة Easy لطلبات HTTP واضغط Enter للمتابعة.

١٢. في النهاية، إذا كان كل شيء يسير بسلاسة، يجب عرض رسالة تهنئة على الشاشة. اضغط Enter لإطلاق البرومبت.

هذا كل شيء! لقد قمت بنجاح بإصدار شهادة SSL/TLS لنطاقك. الآن يمكنك بدء تصفح موقع الويب الخاص بك باستخدام بروتوكول HTTPS.
الخطوة ٤: اختبار تشفير Let’s Encrypt المجاني على النطاق
١٣. من أجل اختبار استقامة توجيه SSL/TLS لنطاقك، قم بزيارة الرابط أدناه واختبر شهادتك على نطاقك.
https://www.ssllabs.com/ssltest/analyze.html

١٤. إذا تلقيت سلسلة من التقارير بشأن ثغرات نطاقك في الاختبارات التي أجريت، فعليك إصلاح تلك الثغرات الأمنية على وجه السرعة.
تصنيف C العام يجعل نطاقك غير آمن للغاية. لحل هذه المشاكل الأمنية، افتح ملف تكوين Apache SSL وقم بعمل التغييرات التالية:
# vi /etc/httpd/conf.d/ssl.conf
ابحث عن السطر الذي يحتوي على تعليمة SSLProtocol
وأضف -SSLv3
في نهاية السطر.

انتقل أعمق في الملف، ابحث وقم بتعليق السطر الذي يحتوي على SSLCipherSuite
عن طريق وضع علامة #
أمامه وأضف المحتوى التالي تحت هذا السطر:
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLOptions +StrictRequire

15. بعد أن تقوم بجميع التغييرات السابقة، احفظ وأغلق الملف، ثم أعد تشغيل خدمة Apache لتطبيق التغييرات.
# systemctl restart httpd.service [On RHEL/CentOS 7] # service httpd restart [On RHEL/CentOS 6]
16. الآن، قم بفحص حالة تشفير نطاقك مرة أخرى، عن طريق زيارة نفس الرابط كما في الأعلى. لإجراء اختبارات مرة أخرى، اضغط على رابط مسح الذاكرة المؤقتة من الموقع.
https://www.ssllabs.com/ssltest/analyze.html

الآن يجب أن تحصل على تصنيف A العام، مما يعني أن نطاقك مؤمن للغاية.
الخطوة 4: تجديد تلقائي لشهادات Let’s Encrypt على Apache
17. هذا الإصدار التجريبي من برنامج Let’s Encrypt يصدر شهادات بتاريخ انتهاء صلاحيتها بعد 90 يومًا. لذلك، من أجل تجديد شهادة SSL، يجب عليك تنفيذ الأمر letsencrypt-auto
مرة أخرى قبل تاريخ انتهاء الصلاحية، بنفس الخيارات والعلامات المستخدمة للحصول على الشهادة الأولية.
يتم تقديم مثال على كيفية تجديد الشهادة يدويًا أدناه.
# cd /usr/local/letsencrypt # ./letsencrypt-auto certonly --apache --renew-by-default -d your_domain.tld
١٨. لتتمكن من أتمتة هذه العملية، قم بإنشاء النص البرمجي التالي المقدم من github erikaheidi، في الدليل /usr/local/bin/
بالمحتوى التالي. (تم تعديل النص البرمجي قليلاً ليعكس دليل تثبيتنا لـ letsencrypt).
# vi /usr/local/bin/le-renew-centos
أضف المحتوى التالي إلى ملف le-renew-centos
:
!/bin/bash domain=$1 le_path='/usr/local/letsencrypt' le_conf='/etc/letsencrypt' exp_limit=30; get_domain_list(){ certdomain=$1 config_file="$le_conf/renewal/$certdomain.conf" if [ ! -f $config_file ] ; then echo "[ERROR] The config file for the certificate $certdomain was not found." exit 1; fi domains=$(grep --only-matching --perl-regex "(?<=domains \= ).*" "${config_file}") last_char=$(echo "${domains}" | awk '{print substr($0,length,1)}') if [ "${last_char}" = "," ]; then domains=$(echo "${domains}" |awk '{print substr($0, 1, length-1)}') fi echo $domains; } if [ -z "$domain" ] ; then echo "[ERROR] you must provide the domain name for the certificate renewal." exit 1; fi cert_file="/etc/letsencrypt/live/$domain/fullchain.pem" if [ ! -f $cert_file ]; then echo "[ERROR] certificate file not found for domain $domain." exit 1; fi exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s) datenow=$(date -d "now" +%s) days_exp=$(echo \( $exp - $datenow \) / 86400 |bc) echo "Checking expiration date for $domain..." if [ "$days_exp" -gt "$exp_limit" ] ; then echo "The certificate is up to date, no need for renewal ($days_exp days left)." exit 0; else echo "The certificate for $domain is about to expire soon. Starting renewal request..." domain_list=$( get_domain_list $domain ) "$le_path"/letsencrypt-auto certonly --apache --renew-by-default --domains "${domain_list}" echo "Restarting Apache..." /usr/bin/systemctl restart httpd echo "Renewal process finished for domain $domain" exit 0; fi
١٩. قم بمنح صلاحيات التنفيذ للنص البرمجي، وقم بتثبيت حزمة bc وتشغيل النص البرمجي لاختباره. استخدم اسم النطاق الخاص بك كمعلمة موضعية للنص البرمجي. استخدم الأوامر التالية لإتمام هذه الخطوة:
# yum install bc # chmod +x /usr/local/bin/le-renew-centos # /usr/local/bin/le-renew-centos your_domain.tld
٢٠. وأخيرًا، باستخدام جدولة Linux، أضف وظيفة cron جديدة لتشغيل النص البرمجي كل شهرين، مضمنًا أن شهادتك ستُحدث قبل تاريخ انتهاء الصلاحية.
# crontab -e
أضف السطر التالي في نهاية الملف.
0 1 1 */2 * /usr/local/bin/le-renew-centos your_domain.tld >> /var/log/your_domain.tld-renew.log 2>&1
هذا كل شيء! خادم Apache الخاص بك الذي يعمل على نظام CentOS/RHEL الآن يقدم محتوى SSL باستخدام شهادة Let’s Encrypt SSL مجانية.
Source:
https://www.tecmint.com/install-lets-encrypt-ssl-certificate-to-secure-apache-on-rhel-centos/