كيفية تثبيت شهادة SSL من جهة إصدار شهادات تجارية

مقدمة

هذا البرنامج التعليمي سيوضح لك كيفية الحصول على شهادة SSL وتثبيتها من جهة اعتماد الشهادات التجارية والموثوقة. تتيح شهادات SSL لخوادم الويب تشفير حركة المرور الخاصة بها، وتوفر أيضًا آلية للتحقق من هويات الخوادم لزوارها. يتم الوصول إلى مواقع الويب التي تستخدم SSL عبر بروتوكول https://.

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

ومع ذلك، هناك بعض القيود على شهادات Let’s Encrypt. تنتهي صلاحيتها كل 3 أشهر، مما يتطلب عادةً وجود نص يقوم بالتجديد التلقائي، ويمكن أن تكون صعبة الاستخدام في البيئات التي لا يمكن فيها ذلك. لا توفر Let’s Encrypt أيضًا شهادات التحقق الموسعة التي تتحقق من الملكية القانونية لوجودك على الويب، أو شهادات وايلدكارد التي ستطابق تلقائيًا كل نطاق فرعي ممكن لموقعك (مثل shop.example.com) دون الحاجة إلى تسجيل كل منها يدويًا.

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

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

المتطلبات المسبقة

هناك عدة متطلبات قبل محاولة الحصول على شهادة SSL من جهة تصديق تجاري:

  • اسم نطاق مسجل. سيستخدم هذا البرنامج التعليمي example.com كمثال. يمكنك شراء اسم نطاق من Namecheap، الحصول على واحد مجانًا من Freenom، أو استخدام مسجل النطاقات الخاص بك.

  • الوصول إلى أحد عناوين البريد الإلكتروني على سجل WHOIS الخاص بنطاقك أو إلى عنوان بريد إلكتروني من نوع “المسؤول” في النطاق نفسه. ستقوم سلطات إصدار شهادات SSL عادةً بالتحقق من التحكم في النطاق عن طريق إرسال رسالة تحقق إلى أحد العناوين المدرجة في سجل WHOIS الخاص بالنطاق، أو إلى عنوان بريد إلكتروني للمسؤول العام في النطاق نفسه. ولكي يتم إصدار شهادة التحقق الموسعة، سيُطلب منك أيضًا تقديم وثائق لمزود الشهادات لتأسيس الهوية القانونية لمالك موقع الويب، بالإضافة إلى أمور أخرى.

  • إعدادات سجل DNS لخادمك. إذا كنت تستخدم DigitalOcean، يرجى الرجوع إلى وثائق DNS لدينا للحصول على تفاصيل حول كيفية إضافتها.

هذا البرنامج التعليمي سيوفر تعليمات التكوين لخادم Ubuntu 22.04 الذي تم إعداده باستخدام برنامج تعليمي تكوين الخادم الأولي لـ Ubuntu 22.04، بما في ذلك مستخدم غير جذر مفعّل للتشغيل وجدار ناري. ستعمل معظم أصناف لينكس الحديثة بنفس الطريقة.

يجب أيضًا أن يكون لديك خادم ويب مثل Nginx أو Apache مثبتًا، باتباع كيفية تثبيت Nginx على Ubuntu 22.04 أو كيفية تثبيت خادم الويب Apache على Ubuntu 22.04. تأكد من أن لديك كتلة خادم (أو مضيف افتراضي Apache) لنطاقك.

الخطوة 1 – اختيار سلطة الشهادات الخاصة بك

إذا لم تكن متأكدًا من أي سلطة شهادات تستخدم، هناك عدة عوامل يجب مراعاتها.

عضويات برامج شهادات الجذر

أهم نقطة هي أن CA الذي تختاره عضو في برامج الشهادات الجذرية لأنظمة التشغيل ومتصفحات الويب الأكثر استخدامًا، أي أنه “موثوق به”، ويتم الثقة في شهادته الجذرية من قبل المتصفحات الشائعة والبرامج الأخرى. إذا كانت شهادة SSL لموقع الويب الخاص بك موقعة من قبل CA موثوق به، يُعتبر هويته صالحة من قِبل البرمجيات التي تثق في CA.

معظم CA التجارية التي ستواجهها ستكون أعضاء في برامج جذور CA المشتركة، ولكن لا يضر التحقق قبل شراء الشهادة الخاصة بك. على سبيل المثال، تنشر Apple قائمتها بالشهادات الجذرية لـ SSL الموثوق بها.

أنواع الشهادات

تأكد من اختيار CA يقدم نوع الشهادة الذي تحتاجه. تقدم العديد من الشركات المصدرة للشهادات تغييرات على هذه الأنواع تحت مجموعة متنوعة من الأسماء والهياكل التسعيرية. إليك وصف موجز لكل نوع:

  • نطاق واحد: يستخدم لنطاق واحد، على سبيل المثال example.com. لاحظ أن النطاقات الفرعية الإضافية، مثل www.example.com، ليست مشمولة
  • البدل: يستخدم لنطاق وأي من نطاقاته الفرعية. على سبيل المثال، يمكن استخدام شهادة البدل لـ *.example.com أيضًا لـ www.example.com و store.example.com
  • نطاق متعدد: المعروفة أيضًا باسم شهادة SAN أو UC، يمكن استخدامها مع عدة نطاقات ونطاقات فرعية تمت إضافتها إلى حقل Subject Alternative Name. على سبيل المثال، يمكن استخدام شهادة واحدة متعددة النطاقات مع example.com، www.example.com، و example.net

بالإضافة إلى أنواع الشهادات المذكورة أعلاه، هناك مستويات مختلفة من التحققات التي تقدمها السلطات الشهادات (CAs):

  • التحقق من النطاق (DV): يتم إصدار شهادات DV بعد التحقق من قبل CA أن الطالب مالك أو يتحكم في النطاق المعني
  • التحقق من الهيئة (OV): يمكن إصدار شهادات OV فقط بعد التحقق من هوية الطالب القانونية من قبل الCA المانح
  • التحقق الموسع (EV): يمكن إصدار شهادات EV فقط بعد التحقق من هوية الطالب القانونية، بالإضافة إلى أمور أخرى، وفقًا لمجموعة صارمة من الإرشادات. الغرض من هذا النوع من الشهادات هو توفير تأكيد إضافي بشأن شرعية هوية مؤسستك لزوار موقعك. يمكن أن تكون شهادات EV فردية أو متعددة النطاقات، ولكن ليس وايلدكارد

ميزات إضافية

تقدم العديد من سلطات الإصدار شتى “مميزات” للتمييز عن بقية بائعي شهادات SSL. قد توفر بعض هذه الميزات لك توفيرًا في المال، لذا من المهم أن تقوم بمقارنة احتياجاتك مع العروض قبل الشراء. يشمل أمثلة على الميزات التي يجب أن تبحث عنها إعادة الشهادة مجانًا أو شهادة بسعر النطاق الفردي التي تعمل لـ `www.` واسم النطاق الأساسي، على سبيل المثال، `www.example.com` بـ SAN لـ `example.com`.

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

بعد أن يكون لديك متطلباتك مرتبة، وتعرف على نوع الشهادة التي تحتاجها، حان الوقت لإنشاء طلب توقيع الشهادة (CSR) ومفتاح خاص.

إذا كنت تخطط لاستخدام Apache HTTP أو Nginx كخادم ويب الخاص بك، يمكنك استخدام الأمر `openssl` لإنشاء مفتاحك الخاص و CSR على خادم الويب الخاص بك. في هذا البرنامج التعليمي، يمكنك الاحتفاظ بجميع الملفات ذات الصلة في دليل المنزل الخاص بك، ولكن لا تتردد في تخزينها في أي موقع آمن على خادمك:

لتوليد مفتاح خاص، المسمى `example.com.key`، و CSR، المسمى `example.com.csr`، قم بتشغيل هذا الأمر (استبدل `example.com` باسم نطاقك):

  1. openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr

في هذه المرحلة، سيُطلب منك عدة أسطر من المعلومات التي سيتم تضمينها في طلب الشهادة الخاصة بك. الجزء الأكثر أهمية هو حقل Common Name، الذي يجب أن يتطابق مع الاسم الذي ترغب في استخدام شهادتك معه – على سبيل المثال، example.com، www.example.com، أو (لطلب شهادة وايلدكارد) *.example.com. إذا كنت تخطط للحصول على شهادة OV أو EV، فتأكد من أن جميع الحقول الأخرى تعكس بدقة تفاصيل منظمتك أو عملك. ليس من الضروري توفير “كلمة مرور تحدي”.

على سبيل المثال:

Output
Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:New York Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:[email protected] Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

سيتم إنشاء ملف .key وملف .csr. ملف .key هو المفتاح الخاص بك، ويجب الحفاظ عليه بشكل آمن. ملف .csr هو ما ستقوم بإرساله إلى CA لطلب شهادة SSL الخاصة بك.

  1. ls example.com*
Output
example.com.csr example.com.key

ستحتاج إلى نسخ ولصق CSR الخاص بك عند تقديم طلب الشهادة إلى CA الخاص بك. لطباعة محتويات CSR الخاص بك، استخدم cat:

cat example.com.csr

الآن أنت جاهز لشراء شهادة من CA.

الخطوة 3 – شراء والحصول على شهادة

يوجد العديد من مزودي خدمات الشهادات الرقمية التجارية، ويمكنك مقارنة وتباين الخيارات الأكثر ملاءمة لإعدادك الخاص. على سبيل المثال، تعمل Namecheap كوسيط لبيع شهادات SSL وقد قامت في الماضي بتغيير مزودي خدمات الشهادات الرقمية لتوفير أفضل قيمة. حاليًا، يقدمون شهادات من Comodo CA. فيما يلي عينة من عروضهم حتى ديسمبر 2022:

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

بعد الموافقة على الشهادة، سيتم إرسال الشهادة إلى المسؤول المسمى عبر البريد الإلكتروني. قم بنسخها وحفظها على الخادم الخاص بك في نفس الموقع الذي أنشأت فيه المفتاح الخاص و CSR الخاص بك. اسم الشهادة يجب أن يحمل اسم النطاق وامتداد .crt، على سبيل المثال، example.com.crt، واسم الشهادة الفرعية intermediate.crt.

الشهادة جاهزة الآن للتثبيت على خادم الويب الخاص بك، ولكن قبل ذلك، قد تحتاج إلى إجراء بعض التغييرات على جدار حمايتك.

الخطوة 4 – تحديث جدار الحماية للسماح بـ HTTPS

إذا كانت جدار الحماية ufw مفعلًا كما يُوصى به في دليل إعداد Ubuntu 22.04 الخاص بنا، فستحتاج إلى ضبط الإعدادات للسماح بحركة مرور HTTPS. يُسجّل Nginx و Apache كلاً من بضعة ملفات تعريف بـ ufw عند التثبيت.

يمكنك رؤية الإعداد الحالي عن طريق كتابة:

  1. sudo ufw status

إذا حصلت على نتيجة تحتوي فقط على Nginx HTTP أو Apache، فإن حركة المرور المسموح بها للخادم هي فقط HTTP:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

للسماح بحركة مرور HTTPS بالإضافة إلى ذلك، قم بالسماح بملف التعريف Nginx Full أو Apache Full وحذف ترخيص ملف التعريف HTTP المتكرر:

  1. sudo ufw allow 'Nginx Full'
  2. sudo ufw delete allow 'Nginx HTTP'

سينتج ذلك نتيجة مشابهة لهذه:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

في الخطوة النهائية، ستقوم بتثبيت الشهادة.

الخطوة 5 – تثبيت الشهادة على الخادم الخاص بك

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

سيغطي هذا البرنامج التعليمي تكوين Nginx و Apache على Ubuntu 22.04، ولكن معظم توزيعات Linux الحديثة ستعمل بنفس الطريقة. يفترض هذا البرنامج التعليمي أيضًا ما يلي:

  • المفتاح الخاص وشهادة SSL، وإذا كانت متاحة، شهادات CA الفرعية موجودة في دليل المنزل، في /home/sammy
  • يسمى المفتاح الخاص example.com.key
  • الشهادة الآمنة SSL تسمى example.com.crt
  • الشهادة الوسيطة (أو الشهادات) التي يقدمها موفر الخدمة الخاص بك موجودة في ملف يسمى intermediate.crt

ملاحظة: في بيئة الإنتاج، يجب تخزين هذه الملفات في مكان يمكن لعملية خادم الويب (عادةً root) الوصول إليه فقط، ويجب أن يتم الاحتفاظ بالمفتاح الخاص بشكل آمن. على سبيل المثال، يقوم Let’s Encrypt بتخزين الشهادات التي يولدها في /etc/letsencrypt. ستختلف أمثلة الإنتاج بسبب تعقيد تكوينات الخوادم المتعددة.

Nginx

هذه هي الخطوات لنشر شهادة SSL يدوياً على Nginx.

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

بافتراض أن ملف الشهادة الخاص بك يسمى example.com.crt، يمكنك استخدام أمر cat لدمج الملفات معًا لإنشاء ملف مدمج يسمى example.com.chained.crt:

  1. cat example.com.crt intermediate.crt > example.com.chained.crt

باستخدام nano أو محرر النص المفضل لديك، افتح ملف كتلة خادم Nginx الافتراضي لتحريره:

  1. sudo nano /etc/nginx/sites-enabled/default

ابحث عن توجيه listen، وقم بتعديله إلى listen 443 ssl:

/etc/nginx/sites-enabled/default
…
server {
    listen 443 ssl;
…

المرة القادمة، ابحث عن التوجيه server_name ضمن نفس كتلة الخادم ، وتأكد من أن قيمته تتطابق مع الاسم الشائع للشهادة الخاصة بك. أضف أيضًا التوجيهات ssl_certificate و ssl_certificate_key لتحديد مسارات ملفات الشهادة ومفتاحك الخاص:

/etc/nginx/sites-enabled/default
…
    server_name example.com;
    ssl_certificate /home/sammy/example.com.chained.crt;
    ssl_certificate_key /home/sammy/example.com.key;
…

للسماح فقط ببروتوكولات وتشفير SSL الأكثر أمانًا ، أضف الأسطر التالية إلى الملف:

/etc/nginx/sites-enabled/default
…
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
…

أخيرًا ، لإعادة توجيه طلبات HTTP إلى HTTPS بشكل افتراضي ، يمكنك إضافة كتلة خادم إضافية في أعلى الملف:

/etc/nginx/sites-enabled/default
server {
    listen 80;
    server_name example.com;
    rewrite ^/(.*) https://example.com/$1 permanent;
}
…

احفظ وأغلق الملف. إذا كنت تستخدم nano ، اضغط على Ctrl+X ، ثم عند الطلب ، اضغط Y ثم Enter.

قبل إعادة تشغيل Nginx ، يمكنك التحقق من صحة تكوينك باستخدام nginx -t:

  1. sudo nginx -t

إذا لم تكن هناك مشاكل ، أعد تشغيل Nginx لتمكين SSL عبر HTTPS:

  1. sudo systemctl restart nginx

جرب الأمر عن طريق الوصول إلى موقعك عبر HTTPS ، على سبيل المثال ، https://example.com. سترغب أيضًا في محاولة الاتصال عبر HTTP ، على سبيل المثال ، http://example.com للتأكد من أن إعادة التوجيه تعمل بشكل صحيح.

أباتشي

هذه هي الخطوات لنشر شهادة SSL يدويًا على Apache.

باستخدام nano أو محرر النصوص المفضل لديك ، افتح ملف الخادم الافتراضي الخاص بـ Apache للتحرير:

  1. sudo nano /etc/apache2/sites-available/000-default.conf

ابحث عن إدخال <VirtualHost *:80> وقم بتعديله حتى يستمع خادم الويب الخاص بك على المنفذ 443:

/etc/apache2/sites-available/000-default.conf
…
<VirtualHost *:443>
…

ثم قم بإضافة التوجيه ServerName، إذا لم يكن موجودًا بالفعل:

/etc/apache2/sites-available/000-default.conf
…
ServerName example.com

ثم قم بإضافة الأسطر التالية لتحديد مسارات الشهادة والمفتاح:

/etc/apache2/sites-available/000-default.conf
…
SSLEngine on
SSLCertificateFile /home/sammy/example.com.crt
SSLCertificateKeyFile /home/sammy/example.com.key
SSLCACertificateFile /home/sammy/intermediate.crt

في هذا الوقت، تم تكوين الخادم الخاص بك للاستماع على HTTPS فقط (المنفذ 443)، لذا لن يتم تقديم طلبات HTTP (المنفذ 80). لتوجيه طلبات HTTP إلى HTTPS، قم بإضافة ما يلي إلى الجزء العلوي من الملف (استبدل الاسم في كلا الأماكن):

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
   ServerName example.com
   Redirect permanent / https://example.com/
</VirtualHost>
…

احفظ وأغلق الملف. إذا كنت تستخدم nano، اضغط Ctrl+X، ثم عند الطلب، Y ثم Enter.

قم بتمكين وحدة Apache SSL عن طريق تشغيل هذا الأمر:

  1. sudo a2enmod ssl

الآن، أعد تشغيل Apache لتحميل التكوين الجديد وتمكين TLS/SSL عبر HTTPS.

  1. sudo systemctl restart apache2

جرب ذلك من خلال الوصول إلى موقعك عبر HTTPS، مثلاً https://example.com. سترغب أيضًا في تجربة الاتصال عبر HTTP، مثلاً http://example.com للتأكد من أن التوجيه يعمل بشكل صحيح.

الاستنتاج

في هذا الدرس، تعلمت كيفية تحديد متى قد تحتاج إلى شراء شهادة SSL من مزود خدمة توثيق تجاري، وكيفية مقارنة الخيارات المتاحة والتفريق بينها. كما تعلمت كيفية تكوين Nginx أو Apache لدعم HTTPS، وكيفية تكييف تكويناتها للاستخدام الإنتاجي.

الخطوة التالية، قد ترغب في قراءة حول حالات استخدام SSL الأخرى، مثل عند العمل مع موازنات الحمل.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-an-ssl-certificate-from-a-commercial-certificate-authority