در ماه مارس 2018 بیایید رمزگذاری پشتیبانی از گواهینامه های کارت ویزیت را اضافه کنیم. گواهینامه های Wildcard به شما امکان می دهد تمام زیر دامنه های سطح اول یک دامنه را با یک مجوز واحد ایمن کنید. گواهینامه های Wildcard فقط از طریق ACMEv2 ، که نسخه به روز شده پروتکل ACME است ، قابل دستیابی هستند. برای استفاده از ACMEv2 برای صدور گواهینامه های کارت ویزیت یا کارتهای غیر ویکارد ، به مشتری نیاز دارید که به روز شده برای پشتیبانی از ACMEv2 باشد. یکی از این مشتری ها acme.sh است که یک پروتکل پروتکل ACME / ACMEv2 است که صرفاً به زبان Shell (پوسته یونیکس) و بدون هیچگونه وابستگی نوشته شده است. علاوه بر این ، دامنه های wildcard باید با استفاده از نوع چالش DNS-01 تأیید شوند. این بدان معنی است که شما برای اثبات کنترل بر یک دامنه برای به دست آوردن گواهینامه کارت ویزیت ، باید سوابق DNS TXT را تغییر دهید.
در این راهنما چگونگی به دست آوردن و استفاده از گواهی نامه های Wildcard رایگان از Let Encrypt on Ubuntu 19.04 را با استفاده از acme.sh
کلاینت ، ابزار Lexicon برای دستکاری خودکار سوابق DNS با مصرف API Vultr و اعزام گواهینامه به سرور وب Nginx ارائه می دهیم.
الزامات
- تازه سرور Ubuntu 19.04 Vultr مستقر شده است.
- شما یک نام دامنه ثبت شده دارید این راهنما
example.com
به عنوان یک دامنه مثال استفاده می کند.
- اطمینان حاصل کنید که سوابق A / AAAA و CNAME DNS را برای نام دامنه کاملاً واجد شرایط (FQDN) خود تنظیم کرده اید. اگر لازم است خود را با مفاهیم DNS آشنا کنید ، می توانید با آموزش مقدماتی در Vultr DNS مشورت کنید .
- Vultr API Access در کنترل پنل حساب Vultr شما فعال شده است.
قبل از اینکه شروع کنی
نسخه اوبونتو را بررسی کنید.
lsb_release -ds
# Ubuntu 19.04
با sudo
دسترسی و نام کاربری مورد نظر خود یک حساب کاربری جدید ایجاد کنید و به آن تغییر دهید. ما با استفاده از johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
توجه : با نام کاربری خود جایگزین johndoe
کنید.
منطقه زمانی را تنظیم کنید.
sudo dpkg-reconfigure tzdata
اطمینان حاصل کنید که سیستم اوبونتو به روز است.
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 را نصب کنید
به عنوان اولین قدم در روند اخذ گواهینامه های wildcard از Let Encrypt با استفاده از acme.sh و Vultr API ، باید Python و Lexicon را نصب کنید . Lexicon یک بسته Python است که راهی برای دستکاری سوابق DNS بر روی چندین ارائه دهنده DNS به روش استاندارد ارائه می دهد.
اگر قبلاً روی سیستم خود نصب نشده اید ، Python را نصب کنید.
sudo apt install -y python3
با تأیید نسخه ، نصب را تأیید کنید.
python3 --version
# Python 3.7.3
ابزار Lexicon را نصب کنید. واژگان یک ابزار Python است که به شما امکان می دهد سوابق DNS را در ارائه دهندگان DNS مختلف به روش استاندارد دستکاری کنید.
sudo apt install -y lexicon
نسخه Lexicon را بررسی کنید.
lexicon --version
# lexicon 3.0.8
نصب acme.sh
مشتری
Acme.sh
یک پروتکل پروتکل ACME است که صرفاً به زبان Shell (پوسته یونیکس) نوشته شده است و فرایند دریافت گواهی امضا شده از طریق Letry Encrypt را خودکار می کند. این نرم افزار از ACME v1 و ACME v2 پشتیبانی می کند و از همه مهمتر از گواهینامه های Wildcard 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
دریافت گواهینامه های wildcard از Let Encrypt
برای به دست آوردن مجوز wildcard ، فقط می توانیم از روش اعتبار سنجی DNS استفاده کنیم. ما از Lexicon و Vultr DNS API برای دستکاری سوابق TXT DNS استفاده می کنیم.
گواهینامه های wildcard 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
که نام دامنه خود را جایگزین کنید ، و مقادیر حفره نگهدار API Vultr را جایگزین ارزش خود کنید.
بعد از اجرای دستورات قبلی ، گواهینامه ها و کلیدهای شما در این موارد قرار دارند:
- برای 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"
اکنون که موفق به اخذ مجوزهای wildcard از Let 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
خودشه. ما با استفاده از برنامه های acme.sh ، Lexicon و Vultr API ، مجوزهای Wildcard را به Nginx اعزام کردیم. وقتی می خواهید چندین زیر دامنه سطح اول تولید شده بصورت دینامیکی ایجاد کنید ، گواهینامه های Wildcard می توانند مفید باشند.