برای فعالسازی SSL در Nginx روی AlmaLinux، ابتدا باید دامنه به سرور درست برسد و سایت HTTP سالم باشد. سپس میتوانید با یک ابزار ACME سازگار، مانند Certbot، گواهی Let’s Encrypt بگیرید. اعتبار گواهی، پیکربندی وبسرور و تمدید خودکار سه موضوع جدا هستند و هر سه به کنترل نیاز دارند.
بازبینی فنی: ۲۷ مهر ۱۴۰۵. نشانی قدیمی و تاریخ انتشار اولیهٔ مقاله حفظ شدهاند. این راهنما برای پیکربندی HTTPS روی نصب موجود Nginx است؛ روش نصب بستهها باید با نسخهٔ AlmaLinux شما سازگار باشد.
پیشنیازهای SSL در Nginx
- نسخهٔ پشتیبانیشده و بهروز AlmaLinux، دسترسی مجاز sudo و پشتیبان تنظیمات وبسرور داشته باشید.
- دامنه و www، اگر استفاده میشود، باید در DNS به مقصد درست برسند. رکورد AAAA اشتباه هم میتواند اعتبارسنجی را مختل کند.
- Nginx باید سایت موردنظر را روی HTTP ارائه کند. برای روش HTTP-01، پورت ۸۰ باید از اینترنت قابل دسترسی باشد؛ HTTPS نیز معمولاً از ۴۴۳ استفاده میکند.
- اگر کنترلپنل گواهیها را مدیریت میکند، روش همان کنترلپنل را دنبال کنید تا تمدیدهای موازی نسازید.
بلوک دامنه و تنظیمات موجود را بررسی کنید
فایل مربوط به دامنه را در چیدمان نصب خود پیدا کنید. فرض نکنید باید مقدار server_name را در بلوک پیشفرض یا اولین فایل nginx.conf جایگزین کنید. بلوک دامنه باید نامهای واقعی سایت را داشته باشد؛ نمونهٔ دستور صحیح چنین است:
server_name example.com www.example.com;
example.com نمونه است. دامنهٔ واقعی خود را جایگزین و www را فقط در صورت استفاده نگه دارید. پیش از اعمال تغییرات، تنظیمات را آزمون کنید:
sudo nginx -t
اگر آزمون خطا دارد، ابتدا همان خطا را رفع کنید. پس از موفقیت و با توجه به روش مدیریت سرویس، تنظیمات را دوباره بارگذاری کنید:
sudo systemctl reload nginx
نصب و مسیر اجرای Certbot را مشخص کنید
در انتخابگر رسمی Certbot، Nginx و روش نصب سازگار با سیستم خود را انتخاب کنید. بستهٔ توزیع، Snap و محیط Python جدا، روشهای یکسانی نیستند؛ چند نصب را بدون بررسی روی هم قرار ندهید. پیش از ادامه، افزونهٔ Nginx نیز باید در همان نصب Certbot در دسترس باشد.
command -v certbot
certbot --version
sudo certbot plugins
اگر Certbot در مسیر فرمان نیست، محل واقعی نصب را بررسی کنید. در نصب Snap، مسیر معمول اجرا /snap/bin/certbot است؛ اسلش آن در ابتدای مسیر قرار دارد، نه بعد از گزینهٔ فرمان. برای حل خطای مسیر، فایل یا پیوند موجود را بیبررسی حذف نکنید.
دریافت و نصب گواهی SSL در Nginx
پس از آمادهبودن DNS، HTTP و افزونهٔ Nginx، با نامهای واقعی دامنه درخواست دهید:
sudo certbot --nginx -d example.com -d www.example.com
اگر از نصب Snap استفاده میکنید و فرمان در PATH نیست، همان گزینهها را با مسیر کامل اجرا کنید:
sudo /snap/bin/certbot --nginx -d example.com -d www.example.com
فقط یکی از دو شکل متناسب با نصب خود را اجرا کنید. پیامها، نامها و شرایط سرویس را بخوانید؛ تأیید همهٔ پرسشها بدون بررسی مناسب نیست. Certbot میتواند تنظیمات Nginx را تغییر دهد، بنابراین ابتدا پشتیبان و راه برگشت داشته باشید.
کلید خصوصی گواهی باید محدودیت دسترسی مناسب داشته باشد. آن را داخل Document Root، تصویر مقاله یا تیکت عمومی قرار ندهید. برای عیبیابی خطای مجوز نیز SELinux یا فایروال را بهطور کامل غیرفعال نکنید؛ علت و سیاست مرتبط را بررسی کنید.
تمدید خودکار را جداگانه کنترل کنید
تاریخ واقعی انقضا و نامهای گواهی را بررسی و تمدید آزمایشی را در زمان مناسب اجرا کنید:
sudo certbot certificates
sudo certbot renew --dry-run
در نصب فاقد مسیر فرمان، از مسیر کامل همان ابزار استفاده کنید. dry-run میتواند reload موقت یا اجرای hook داشته باشد؛ پیش از آزمون، تنظیمات نصب را بخوانید. موفقیت آزمون نیز به معنی فعالبودن زمانبندی نیست. timer یا cron مربوط به روش نصب را بررسی کنید و مورد تکراری نسازید.
آزمون نهایی و خطاهای رایج
دامنهٔ اصلی و www را در مرورگر باز کنید و نام گواهی، زنجیرهٔ اعتماد و تاریخ انقضا را ببینید. برای بررسی پاسخ HTTP میتوانید نمونهٔ زیر را با دامنهٔ واقعی اجرا کنید:
curl -I https://example.com
گزینهٔ غیرفعالکردن اعتبارسنجی TLS را برای پنهانکردن خطا اضافه نکنید. در صورت استفاده از CDN، گواهی مبدأ و لبه را جدا بررسی کنید. خطای DNS یا اعتبارسنجی را هم با صدور پیاپی و بیبرنامه تکرار نکنید؛ ابتدا علت را رفع کنید.