تولید گواهی Let’s Encrypt با استفاده از Certbot روی لینوکس


۰


امن‌سازی وب‌سایت یا سرویس‌های خود با استفاده از SSL/TLS بسیار مهم است تا داده‌های تبادل شده بین سایت شما و بازدیدکنندگان به‌صورت محرمانه و امن باقی بمانند. Let’s Encrypt یکی از گزینه‌های محبوب برای دریافت گواهی‌های SSL/TLS است و در این مقاله، نحوه‌ی تولید گواهی Let’s Encrypt با استفاده از Certbot روی سیستم‌عامل لینوکس را بررسی می‌کنیم.

Let’s Encrypt چیست؟

Let’s Encrypt یک مرجع صدور گواهی (Certificate Authority یا CA) رایگان، خودکار و متن‌باز است که گواهی‌های SSL/TLS را صادر می‌کند. این پروژه توسط گروه پژوهشی امنیت اینترنت (Internet Security Research Group - ISRG) راه‌اندازی شده است و هدف آن امن‌تر کردن وب است با ارائه‌ی گواهی‌های رایگان SSL/TLS به مالکان وب‌سایت‌ها. گواهی‌های Let’s Encrypt توسط بیشتر مرورگرها و دستگاه‌های مدرن اعتماد شده‌اند و به همین دلیل گزینه‌ی مطمئنی برای امنیت وب‌سایت شما محسوب می‌شوند.

چرا Let’s Encrypt را انتخاب کنیم؟

Let’s Encrypt مزایای زیر را نسبت به دیگر CAهای تجاری ارائه می‌دهد:

  • گواهی‌های رایگان: صدور گواهی کاملاً رایگان است و دیگر نیازی به پرداخت هزینه‌ی گزاف برای گواهی SSL/TLS نیست.
  • صدور خودکار گواهی‌ها: صدور و تمدید گواهی‌ها به صورت خودکار انجام می‌شود و این روند را بسیار آسان می‌کند.
  • متن‌باز بودن: Let’s Encrypt پروژه‌ای متن‌باز است که اجازه می‌دهد جامعه‌ی کاربران و توسعه‌دهندگان در توسعه و افزایش امنیت آن سهیم باشند.
  • گواهی‌های مورد اعتماد: این گواهی‌ها توسط اکثر مرورگرها و دستگاه‌های مدرن به رسمیت شناخته می‌شوند، در نتیجه امنیت بالایی برای برنامه‌های آنلاین شما فراهم می‌کند.

Certbot چیست؟

Certbot یک ابزار خط فرمان (کامندلاین) برای تولید گواهی است که توسط بنیاد Electronic Frontier Foundation (EFF) و ISRG توسعه یافته است. Certbot طوری طراحی شده که با Let’s Encrypt کار کند و روند دریافت و مدیریت گواهی‌های SSL/TLS را بسیار ساده کند. این ابزار پشتیبانی از پلتفرم‌های مختلف از جمله لینوکس، ویندوز و مک‌اواس را دارد.

چگونه یک گواهی Let’s Encrypt با Certbot روی لینوکس تولید کنیم

برای تولید گواهی Let’s Encrypt با استفاده از Certbot روی لینوکس، مراحل زیر را دنبال کنید:

گام ۱: راه‌اندازی DNS برای تست

یک زیردامنه رایگان با استفاده از سرویس CloudDNS که ارائه دهنده‌ی DNS هاستینگ رایگان است، ایجاد کنید. این زیردامنه برای اهداف تست استفاده خواهد شد.

مراحل دریافت زیردامنه رایگان:

  • در CloudDNS حساب کاربری بسازید
  • به بخش DNS Hosting بروید → گزینه Create Zone → در پنجره‌ی پاپ‌آپ، گزینه Free Zone را انتخاب کنید

  • در قسمت دامنه، neural1 را وارد کنید و آدرس IP سروری را که می‌خواهید گواهی SSL روی آن تولید و استفاده کنید، وارد نمایید

گام ۲: نصب Certbot

سیستمی که قصد داریم روی آن گواهی را تولید و استفاده کنیم، با اوبونتو لینوکس نسخه ۲۲.۰۴ کار می‌کند.

وارد سیستم شوید (SSH) و دستور زیر را اجرا کنید:

1sudo apt-get install certbot

برای راهنمایی نصب دقیق روی سیستم‌عامل‌ها و نرم‌افزارهای مختلف، به وب‌سایت https://certbot.eff.org/ مراجعه کنید.

گام ۳: تولید گواهی Let’s Encrypt

  • ابتدا وب‌سرور خود را متوقف کنید و دستور زیر را برای تولید گواهی اجرا نمایید. Certbot به صورت موقت یک وب‌سرور روی دستگاه شما راه‌اندازی خواهد کرد.
1sudo certbot certonly --standalone -d neural1.dns-dynamic.net \
2--staple-ocsp -m test@neural1.dns-dynamic.net --agree-tos
  • اگر وب‌سرور شما در حال حاضر از پورت ۸۰ استفاده می‌کند و نمی‌خواهید آن را متوقف کنید، دستور زیر را اجرا کرده و مراحل دستورالعمل را در ترمینال دنبال کنید:
1sudo certbot certonly --webroot -w /tmp/webroot -d neural1.dns-dynamic.net \
2--staple-ocsp -m test@neural1.dns-dynamic.net --agree-tos

اگر گواهی با موفقیت تولید شود، مسیر ذخیره گواهی و تاریخ انقضا نمایش داده می‌شود:

1Saving debug log to /var/log/letsencrypt/letsencrypt.log  
2Requesting a certificate for neural1.dns-dynamic.net  
3Successfully received certificate.  
4Certificate is saved at: /etc/letsencrypt/live/neural1.dns-dynamic.net/fullchain.pem  
5Key is saved at:         /etc/letsencrypt/live/neural1.dns-dynamic.net/privkey.pem  
6This certificate expires on 2024-10-23.  
7These files will be updated when the certificate renews.  
8Certbot has set up a scheduled task to automatically renew this certificate in the background.

در این دستورات، neural1.dns-dynamic.net را با دامنه خود و test@neural1.dns-dynamic.net را با ایمیل خود جایگزین کنید. مطمئن شوید ایمیل درست وارد شده چون پیام‌های تمدید گواهی به این ایمیل ارسال می‌شود.

دریافت داستان‌های PI در ایمیل شما

برای دریافت به‌روزرسانی‌ها از این نویسنده، در Medium رایگان عضو شوید.

Subscribe

نکته:

گواهی‌های Let’s Encrypt معمولاً ۹۰ روز اعتبار دارند. اما این سرویس مکانیزم تمدید خودکار دارد که روند تمدید را بدون دخالت دستی انجام می‌دهد و نگرانی از تمدید به موقع را کاهش می‌دهد.

در لاگ‌ها چنین پیامی هم نمایش داده می‌شود:
Certbot has configured a scheduled task to automatically renew this certificate in the background.

دستورات تمدید در این مسیرها قرار دارند:

  • /etc/cron.d/certbot : اگر سیستم از cron استفاده می‌کند، Certbot دوبار در روز اجرا می‌شود.
  • systemctl list-timers: اگر سیستم systemd دارد، تایمری تنظیم شده که دوبار در روز Certbot را اجرا می‌کند.

نمونه وضعیت تایمر Certbot:

1# systemctl status certbot.timer  
2● certbot.timer - Run certbot twice daily  
3Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)  
4Active: active (waiting) since Thu 2024-07-25 03:19:10 IST; 23h ago  
5Trigger: Fri 2024-07-26 16:20:08 IST; 13h left  
6Triggers: ● certbot.service  
7Jul 25 03:19:10 e2e-97-21 systemd[1]: Started Run certbot twice daily.

گام ۴: تایید گواهی‌ها

برای فهرست کردن گواهی‌های ذخیره شده در مسیر زیر دستور زیر را اجرا کنید:

1sudo ls -l /etc/letsencrypt/live/neural1.dns-dynamic.net/

خروجی مشابه زیر خواهد بود:

1-rw-r--r-- 1 root root 692 Jul 25 21:21 README  
2lrwxrwxrwx 1 root root  47 Jul 25 21:21 cert.pem -> ../../archive/neural1.dns-dynamic.net/cert1.pem  
3lrwxrwxrwx 1 root root  48 Jul 25 21:21 chain.pem -> ../../archive/neural1.dns-dynamic.net/chain1.pem  
4lrwxrwxrwx 1 root root  52 Jul 25 21:21 fullchain.pem -> ../../archive/neural1.dns-dynamic.net/fullchain1.pem  
5lrwxrwxrwx 1 root root  50 Jul 25 21:21 privkey.pem -> ../../archive/neural1.dns-dynamic.net/privkey1.pem
  • cert.pem: گواهی SSL/TLS دامنه شما
  • chain.pem: گواهی‌های میانی که گواهی شما را به CA ریشه مرتبط می‌کنند
  • fullchain.pem: ترکیب cert.pem و chain.pem در یک فایل برای راحتی استفاده
  • privkey.pem: کلید خصوصی گواهی SSL/TLS شما

حالا می‌توانید این گواهی‌ها را برای امن کردن نرم‌افزارها و سرویس‌های مختلف استفاده کنید، از جمله:

  • وب‌سرور Nginx
  • وب‌سرور Apache
  • مخزن آرشیو Nexus
  • سرور ذخیره‌سازی Minio
  • لود بالانسر HAProxy
  • کانتینرهای Docker
  • کنترلرهای Kubernetes Ingress
  • سرور CI/CD جِنکینز
  • سرور برنامه Tomcat

امن‌سازی برنامه‌ها و سرویس‌های مختلف

نمونه استفاده از این گواهی‌ها روی وب‌سرورهای nginx و Apache:

وب‌سرور Nginx

1server {  
2    listen 443 ssl;  
3    server_name yourdomain.com;  
4    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;  
5    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;  
6    # سایر تنظیمات...
7}

وب‌سرور Apache

1<VirtualHost *:443>  
2    ServerName yourdomain.com  
3    SSLEngine on  
4    SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/cert.pem  
5    SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem  
6    SSLCertificateChainFile /etc/letsencrypt/live/yourdomain.com/chain.pem  
7    # سایر تنظیمات...
8</VirtualHost>

نتیجه‌گیری

در این مقاله نحوه تولید گواهی Let’s Encrypt با استفاده از Certbot روی لینوکس را بررسی کردیم. Let’s Encrypt و Certbot این امکان را فراهم می‌کنند که به راحتی گواهی‌های SSL/TLS را دریافت و مدیریت کنید و از امن بودن وب‌سایت یا برنامه‌های خود و اعتماد کاربران تان مطمئن باشید. با دنبال کردن این مراحل، می‌توانید وب‌سایت خود را با گواهی Let’s Encrypt امن کرده و از داده‌های بازدیدکنندگان خود محافظت کنید.

software

۰


نظرات


author
نویسنده مقاله: شادان ارشدی

کد با می متعهد است که بالاترین سطح کیفی آموزش را در اختیار شما بگذارد. هدف به اشتراک گذاشتن دانش فناوری اطلاعات و توسعه نرم افزار در بالاترین سطح ممکن برای درستیابی به جامعه ای توانمند و قدرتمند است. ما باور داریم هر کسی میتواند با استمرار در یادگیری برنامه نویسی چالش های خود و جهان پیرامون خود را بر طرف کند و به موفقیت های چشم گیر برسد. با ما در این مسیر همراه باشید. کد با می اجتماع حرفه ای برنامه نویسان ایرانی.

تمام حقوق این سایت متعلق به وبسایتcodebymeمیباشد.