۰
امنسازی وبسایت یا سرویسهای خود با استفاده از SSL/TLS بسیار مهم است تا دادههای تبادل شده بین سایت شما و بازدیدکنندگان بهصورت محرمانه و امن باقی بمانند. Let’s Encrypt یکی از گزینههای محبوب برای دریافت گواهیهای SSL/TLS است و در این مقاله، نحوهی تولید گواهی Let’s Encrypt با استفاده از Certbot روی سیستمعامل لینوکس را بررسی میکنیم.
Let’s Encrypt یک مرجع صدور گواهی (Certificate Authority یا CA) رایگان، خودکار و متنباز است که گواهیهای SSL/TLS را صادر میکند. این پروژه توسط گروه پژوهشی امنیت اینترنت (Internet Security Research Group - ISRG) راهاندازی شده است و هدف آن امنتر کردن وب است با ارائهی گواهیهای رایگان SSL/TLS به مالکان وبسایتها. گواهیهای Let’s Encrypt توسط بیشتر مرورگرها و دستگاههای مدرن اعتماد شدهاند و به همین دلیل گزینهی مطمئنی برای امنیت وبسایت شما محسوب میشوند.
Let’s Encrypt مزایای زیر را نسبت به دیگر CAهای تجاری ارائه میدهد:
Certbot یک ابزار خط فرمان (کامندلاین) برای تولید گواهی است که توسط بنیاد Electronic Frontier Foundation (EFF) و ISRG توسعه یافته است. Certbot طوری طراحی شده که با Let’s Encrypt کار کند و روند دریافت و مدیریت گواهیهای SSL/TLS را بسیار ساده کند. این ابزار پشتیبانی از پلتفرمهای مختلف از جمله لینوکس، ویندوز و مکاواس را دارد.
برای تولید گواهی Let’s Encrypt با استفاده از Certbot روی لینوکس، مراحل زیر را دنبال کنید:
یک زیردامنه رایگان با استفاده از سرویس CloudDNS که ارائه دهندهی DNS هاستینگ رایگان است، ایجاد کنید. این زیردامنه برای اهداف تست استفاده خواهد شد.
مراحل دریافت زیردامنه رایگان:
DNS Hosting بروید → گزینه Create Zone → در پنجرهی پاپآپ، گزینه Free Zone را انتخاب کنیدneural1 را وارد کنید و آدرس IP سروری را که میخواهید گواهی SSL روی آن تولید و استفاده کنید، وارد نماییدسیستمی که قصد داریم روی آن گواهی را تولید و استفاده کنیم، با اوبونتو لینوکس نسخه ۲۲.۰۴ کار میکند.
وارد سیستم شوید (SSH) و دستور زیر را اجرا کنید:
1sudo apt-get install certbot
برای راهنمایی نصب دقیق روی سیستمعاملها و نرمافزارهای مختلف، به وبسایت https://certbot.eff.org/ مراجعه کنید.
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 را با ایمیل خود جایگزین کنید. مطمئن شوید ایمیل درست وارد شده چون پیامهای تمدید گواهی به این ایمیل ارسال میشود.
برای دریافت بهروزرسانیها از این نویسنده، در Medium رایگان عضو شوید.
گواهیهای 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:
وبسرور 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 امن کرده و از دادههای بازدیدکنندگان خود محافظت کنید.
۰
کد با می متعهد است که بالاترین سطح کیفی آموزش را در اختیار شما بگذارد. هدف به اشتراک گذاشتن دانش فناوری اطلاعات و توسعه نرم افزار در بالاترین سطح ممکن برای درستیابی به جامعه ای توانمند و قدرتمند است. ما باور داریم هر کسی میتواند با استمرار در یادگیری برنامه نویسی چالش های خود و جهان پیرامون خود را بر طرف کند و به موفقیت های چشم گیر برسد. با ما در این مسیر همراه باشید. کد با می اجتماع حرفه ای برنامه نویسان ایرانی.