بیشتر راهنماها گرفتن گواهی SSL را با افزونه های آماده انجام میدهند که مستقیم به پیکربندی Nginx یا Apache دست میزنند. این روش وقتی خوب است که وب سرور استانداردی داشته باشید. اما اگر سرویس شما وب سرور معمولی نیست، یا نمیخواهید کسی به فایل های پیکربندی دست بزند، حالت standalone گزینه تمیزتری است: Certbot خودش برای چند ثانیه یک وب سرور موقت بالا می آورد، اعتبارسنجی را انجام میدهد و کنار میرود.
این حالت دقیقا کجا به کار می آید
در حالت standalone، خود Certbot روی پورت ۸۰ گوش میدهد تا Let's Encrypt بتواند مالکیت دامنه را تایید کند. یعنی در آن لحظه هیچ سرویس دیگری نباید آن پورت را اشغال کرده باشد.
این محدودیت در عوض یک مزیت بزرگ دارد: مستقل از اینکه چه چیزی روی سرور اجرا میشود، فرایند یکسان است.
- سرورهایی که اصلا وب سرور ندارند، مثل سرور ایمیل یا سرویس های داخلی.
- سرویس هایی که Certbot افزونه اختصاصی برایشان ندارد.
- مواقعی که میخواهید پیکربندی وب سرور دست نخورده بماند.
پیشنیازهایی که نبودشان بیشترین خطا را میسازد
قبل از اجرای هر دستوری این سه مورد را بررسی کنید. تقریبا تمام خطاهای این مرحله از یکی از همین ها می آید: رکورد دامنه هنوز منتشر نشده، پورت ۸۰ بسته است، یا سرویس دیگری آن را گرفته.
dig +short example.comsudo ss -tlnp | grep :80sudo ufw allow 80/tcpنصب Certbot
روی نسخه های امروزی اوبونتو و دبیان، نصب از مخزن رسمی کاملا کافی است و ساده ترین راه است. اگر به نسخه بسیار جدیدتر نیاز دارید، نسخه snap هم در دسترس است اما برای اکثر کاربردها لازم نیست.
اگر هنوز روی اوبونتو ۱۸.۰۴ یا ۲۰.۰۴ هستید، توجه داشته باشید که دوره پشتیبانی استاندارد این نسخه ها تمام شده است. برای سروری که قرار است گواهی SSL و ترافیک واقعی داشته باشد، ارتقا به ۲۲.۰۴ یا بالاتر ارزشش را دارد.
sudo apt update
sudo apt install certbotcertbot --versionگرفتن گواهی
اگر وب سروری در حال اجراست، باید موقتا متوقف شود. روش تمیزتر این است که به جای توقف دستی، از هوک ها استفاده کنید تا Certbot خودش قبل و بعد از کار این کار را انجام دهد. همین روش در تمدیدهای خودکار بعدی هم به کار می آید.
تمام دامنه هایی که میخواهید در یک گواهی باشند را با d- اضافه کنید. توجه کنید که example.com و www.example.com از نظر Let's Encrypt دو دامنه جدا هستند.
sudo systemctl stop nginx
sudo certbot certonly --standalone -d example.com -d www.example.com
sudo systemctl start nginxsudo certbot certonly --standalone --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx" -d example.com -d www.example.comفایل ها کجا ذخیره میشوند
بعد از موفقیت، گواهی ها در مسیر live قرار میگیرند. نکته مهم این است که این فایل ها لینک نمادین هستند و در هر تمدید به نسخه جدید اشاره میکنند. پس در پیکربندی سرویس ها همیشه به همین مسیر live ارجاع دهید و فایل ها را جای دیگری کپی نکنید؛ در غیر این صورت بعد از اولین تمدید، سرویس شما همچنان گواهی قدیمی را استفاده میکند.
/etc/letsencrypt/live/example.com/fullchain.pem
/etc/letsencrypt/live/example.com/privkey.pemتمدید خودکار و آزمایش آن
گواهی های Let's Encrypt نود روز اعتبار دارند. روی نسخه های امروزی، بسته Certbot خودش یک تایمر سیستمی نصب میکند و نیازی به ساختن کرون جاب دستی نیست. کافی است یک بار مطمئن شوید که این تایمر فعال است.
آزمایش تمدید را حتما انجام دهید. این دستور کل فرایند را بدون صدور گواهی واقعی شبیه سازی میکند و اگر هوک ها یا پورت مشکلی داشته باشند، همینجا مشخص میشود.
systemctl list-timers | grep certbotsudo certbot renew --dry-runخطاهای رایج و دلیلشان
اگر با پیام مربوط به محدودیت تعداد صدور روبرو شدید، بدانید که Let's Encrypt برای هر مجموعه دامنه یکسان، سقف هفتگی دارد. در زمان آزمایش و تنظیم اولیه، از محیط آزمایشی استفاده کنید تا این سقف را مصرف نکنید.
- خطای اتصال روی پورت ۸۰: سرویس دیگری آن را گرفته یا فایروال بسته است.
- خطای اعتبارسنجی دامنه: رکورد DNS هنوز منتشر نشده یا به آی پی دیگری اشاره میکند.
- رسیدن به سقف صدور: با سوییچ dry-run-- یا محیط staging آزمایش کنید.
- اگر شبکه سرور به سرویس های Let's Encrypt دسترسی پایدار ندارد، اعتبارسنجی از راه DNS گزینه مطمئن تری است.
پرسش های پرتکرار
چرا Certbot در حالت standalone خطای پورت ۸۰ میدهد؟
در این حالت خود Certbot باید روی پورت ۸۰ گوش بدهد. اگر وب سروری در حال اجرا باشد باید موقتا متوقف شود یا از پیش هوک و پس هوک استفاده کنید.
گواهی Lets Encrypt چند وقت اعتبار دارد؟
نود روز. روی نسخه های امروزی، تمدید به صورت خودکار توسط تایمر سیستمی انجام میشود و نیازی به ساختن کرون جاب دستی نیست.
آیا میتوان فایل های گواهی را در مسیر دیگری کپی کرد؟
توصیه نمیشود. مسیر live شامل لینک نمادین است و بعد از هر تمدید به نسخه جدید اشاره میکند. اگر فایل ها را کپی کنید، سرویس شما بعد از تمدید همچنان گواهی قدیمی را استفاده میکند.
به راهنمای بیشتری نیاز دارید؟
تیم پشتیبانی هایوهاست برای انتخاب و مدیریت سرویس کنار شماست.