في مارس 2018 ، أضاف Let's Encrypt دعمًا لشهادات البدل. تسمح لك شهادات أحرف البدل بتأمين جميع نطاقات المستوى الأول للمجال بشهادة واحدة. يمكن الحصول على شهادات أحرف البدل فقط من خلال ACMEv2 ، وهو إصدار محدث من بروتوكول ACME. لاستخدام ACMEv2 للحصول على شهادات حرف بدل أو حرف بدل ، ستحتاج إلى عميل تم تحديثه لدعم ACMEv2. أحد هذه العملاء هو acme.sh ، وهو عميل بروتوكول ACME / ACMEv2 مكتوب بلغة Shell (Unix shell) بحتة دون أي تبعيات. علاوة على ذلك ، يجب التحقق من نطاقات أحرف البدل باستخدام نوع تحدي DNS-01. هذا يعني أنك بحاجة إلى تعديل سجلات TXT لنظام أسماء النطاقات لإثبات السيطرة على المجال للحصول على شهادة حرف بدل.
في هذا الدليل ، نوضح كيفية الحصول على شهادات أحرف البدل المجانية ونشرها من Let's Encrypt على Ubuntu 19.04 باستخدام أداة acme.shالعميل ، Lexicon للتلاعب التلقائي لسجلات DNS عن طريق استهلاك واجهة برمجة تطبيقات Vultr ونشر شهادات النشر إلى خادم Nginx على الويب.
المتطلبات
- خادم Ubuntu 19.04 Vultr السحابي تم نشره حديثًا.
- لديك اسم مجال مسجل. يستخدم هذا الدليل
example.comكمثال المجال.
- تأكد من تعيين سجلات A / AAAA و CNAME DNS لاسم المجال المؤهل بالكامل (FQDN). قد ترغب في الرجوع إلى مقدمة برنامج Vultr DNS التعليمي إذا كنت بحاجة إلى التعرف على مفاهيم DNS.
- تم تمكين Vultr API Access في لوحة تحكم حساب Vultr.
قبل ان تبدأ
تحقق من إصدار Ubuntu.
lsb_release -ds
# Ubuntu 19.04
قم بإنشاء حساب مستخدم جديد له sudoحق الوصول واسم المستخدم المفضل لديك وقم بالتبديل إليه. نستخدم johndoe.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
ملاحظة : استبدل johndoeباسم المستخدم الخاص بك.
قم بإعداد المنطقة الزمنية.
sudo dpkg-reconfigure tzdata
تأكد من تحديث نظام Ubuntu الخاص بك.
sudo apt update && sudo apt upgrade -y
قم بتثبيت الحزم اللازمة.
sudo apt install -y git wget curl socat
قم بتثبيت Nginx
قم بتثبيت خادم الويب Nginx.
sudo apt install -y nginx
التحقق من إصدار.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
قم بتثبيت Python و Lexicon
كخطوة أولى في عملية الحصول على شهادات أحرف البدل من Let's Encrypt باستخدام acme.sh و Vultr API ، تحتاج إلى تثبيت Python و Lexicon . المعجم هو حزمة Python توفر طريقة للتعامل مع سجلات DNS على العديد من موفري DNS بطريقة موحدة.
قم بتثبيت Python إذا لم يكن مثبتًا بالفعل على نظامك.
sudo apt install -y python3
قم بتأكيد التثبيت من خلال التحقق من الإصدار.
python3 --version
# Python 3.7.3
قم بتثبيت أداة المعجم. المعجم هو أداة Python تسمح لك بمعالجة سجلات DNS على مختلف موفري DNS بطريقة موحدة.
sudo apt install -y lexicon
تحقق من إصدار المعجم.
lexicon --version
# lexicon 3.0.8
تثبيت acme.shالعميل
Acme.shهو عميل بروتوكول ACME مكتوب بلغة Shell (Unix shell) بحتة ويقوم بأتمتة عملية الحصول على شهادة موقعة عبر Let's Encrypt. وهو يدعم ACME v1 و ACME v2 ، والأهم من ذلك أنه يدعم ACME v2 أحرف البدل. في هذا القسم ، نقوم بتثبيت برنامج Acme.sh.
ملاحظة: من المستحسن استخدام rootالمستخدم للتثبيت acme.sh، على الرغم من أنه لا يتطلب root/ sudoالوصول.
قم بالتبديل إلى rootالمستخدم من المستخدم العادي إذا قمت بإنشائه.
sudo su - root
تنزيل وتثبيت acme.sh.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
التحقق من إصدار.
acme.sh --version
# v2.8.2
احصل على أحرف البدل من Let's Encrypt
للحصول على شهادة حرف بدل ، يمكننا فقط استخدام طريقة التحقق من DNS. نحن نستخدم Lexicon و Vultr DNS API لمعالجة سجلات TXT DNS.
احصل على شهادات البدل RSA و ECC لنطاقك.
# Configure your API key and username
export PROVIDER=vultr
export LEXICON_VULTR_USERNAME="[email protected]"
export LEXICON_VULTR_TOKEN="XXXXXXXXXXXXXXX"
# RSA 2048
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength 2048
# ECC 256
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength ec-256
ملاحظة : لا تنس استبدال example.comاسم المجال الخاص بك ، واستبدال قيم نائب Vultr API باسمك الخاص.
بعد تشغيل الأوامر السابقة ، تكون الشهادات والمفاتيح في:
- بالنسبة لـ RSA:
~/.acme.sh/example.comالدليل.
- بالنسبة إلى ECC / ECDSA:
~/.acme.sh/example.com_eccالدليل.
ملاحظة : يجب عدم استخدام ملفات الشهادة في ~/.acme.sh/المجلد ، فهي للاستخدام الداخلي فقط ، وقد يتغير هيكل الدليل في المستقبل.
لإدراج شهاداتك ، يمكنك تشغيل:
acme.sh --list
قم بإنشاء مجلد لتخزين شهاداتك في الإنتاج. نستخدم /etc/letsencryptالدليل.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
تثبيت / نسخ الشهادات لاستخدام الإنتاج على الخادم الخاص بك.
# RSA
acme.sh --install-cert -d example.com \
--cert-file /etc/letsencrypt/example.com/cert.pem \
--key-file /etc/letsencrypt/example.com/private.key \
--fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
--cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
--key-file /etc/letsencrypt/example.com_ecc/private.key \
--fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
الآن بعد أن حصلنا على شهادات أحرف البدل بنجاح من Let's Encrypt ، نحتاج إلى تهيئة خادم الويب Nginx. يتم تجديد جميع الشهادات تلقائيًا كل 60 يومًا.
بعد الحصول على الشهادات وتثبيتها على موقعك المفضل ، يمكنك تسجيل الخروج من rootمستخدم إلى sudoمستخدم عادي والاستمرار في إدارة الخادم الخاص بك باستخدام sudoإذا لزم الأمر.
exit
قم بتشغيل sudo vim /etc/nginx/sites-available/example.com.confوملء الملف بالمحتوى التالي. استبدل كل تكرارات example.comاسم المجال الخاص بك.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com *.example.com;
root /var/www/example.com;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
}
قم بتنشيط example.com.confالتكوين الجديد عن طريق ربط الملف sites-enabledبالدليل.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
اختبار تكوين Nginx.
sudo nginx -t
إعادة تحميل Nginx.
sudo systemctl reload nginx.service
هذا هو. نشرنا شهادات أحرف البدل في Nginx باستخدام acme.sh و Lexicon و Vultr API. يمكن أن تكون أحرف البدل مفيدة عندما تريد تأمين عدة نطاقات فرعية من المستوى الأول تم إنشاؤها ديناميكيًا.