گواهی SSL: نامعتبر یا نزدیک انقضا
چرا مرورگر به گواهی اعتماد نمیکند و چطور تمدید را خودکار کنید.
گواهی SSL چیست؟
گواهی SSL (که درستش گواهی TLS است) کارت شناسایی سایت شماست. وقتی کسی سایت را با HTTPS باز میکند، سرور این گواهی را نشان میدهد و مرورگر بررسی میکند که سه چیز درست باشد: گواهی را مرجعی صادر کرده که مرورگر به آن اعتماد دارد، نام سایت در فهرست نامهای گواهی هست، و تاریخ گواهی نگذشته است.
چرا مهم است؟
اگر یکی از این سه بررسی شکست بخورد، مرورگر به جای سایت یک صفحهٔ هشدار تمامصفحه نشان میدهد و بیشتر بازدیدکنندهها همانجا برمیگردند. برنامهها و سرویسهایی هم که به سایت یا API شما وصل میشوند، معمولاً اتصال را کاملاً قطع میکنند.
چهار مشکل رایج
- گواهی منقضی شده: تمدید انجام نشده است. گواهی تازه بگیرید و تمدید را خودکار کنید (قدمهای پایین).
- نام اشتباه: نام سایت در فهرست نامهای گواهی نیست؛ مثلاً گواهی برای
example.comاست ولی سایت باwww.example.comباز میشود. گواهیای بگیرید که همهٔ نامها را پوشش دهد. - گواهی خودامضا یا نامعتبر: گواهی را مرجعی صادر نکرده که مرورگرها به آن اعتماد دارند. آن را با گواهی یک مرجع عمومی مثل Let’s Encrypt عوض کنید.
- زنجیرهٔ ناقص: سرور فقط گواهی خود سایت را میفرستد و گواهی میانی را نه. بعضی مرورگرها کمبود را جبران میکنند ولی بسیاری از برنامهها خطا میدهند. در تنظیمات سرور فایل زنجیرهٔ کامل را بگذارید (در
certbotنام آنfullchain.pemاست).
تمدید را خودکار کنید
گواهیها عمر کوتاهی دارند و کوتاهتر هم میشوند: گواهیهای Let’s Encrypt نود روز اعتبار دارند، و طبق تصمیم انجمن مرجعها و مرورگرها بیشترین عمر مجاز همهٔ گواهیهای عمومی از مارس ۲۰۲۶ دویست روز است و تا سال ۲۰۲۹ به چهلوهفت روز میرسد. تمدید دستی دیگر عملی نیست.
- ببینید گواهی را چه کسی میگیرد. اگر سایت پشت یک شبکهٔ توزیع محتوا یا روی هاستی است که HTTPS را خودش مدیریت میکند، معمولاً تمدید خودکار است و فقط کافی است آن را در پنل روشن نگه دارید.
- اگر سرور را خودتان اداره میکنید، یک برنامهٔ ACME نصب کنید؛ رایجترینش
certbotاست که گواهی رایگان Let’s Encrypt میگیرد و تنظیم وبسرور را هم انجام میدهد. - گواهی را برای همهٔ نامها بگیرید؛ نمونهٔ دستور را پایینتر ببینید.
- مطمئن شوید تمدید خودکار زمانبندی شده است و آن را یک بار آزمایشی اجرا کنید.
- در صفحهٔ SSL چکنت سایت را بررسی کنید و تاریخ انقضا و نامها را ببینید.
sudo certbot --nginx -d example.com -d www.example.com sudo certbot renew --dry-run
اگر رکورد CAA دارید، مرجعی که از آن گواهی میگیرید باید در آن نام برده شده باشد؛ وگرنه تمدید شکست میخورد.
بررسی با چکنت
در صفحهٔ SSL چکنت پاسخ «معتبر است» همراه با روزهای مانده تا انقضا میآید و اگر کمتر از چهارده روز مانده باشد، «بهزودی منقضی میشود» را میبینید. «معتبر نیست» یعنی مرورگرها به گواهی اعتماد نمیکنند، و «گواهی دریافت نشد» یعنی اتصال به سرور برقرار نشد. زیر پاسخ، صادرکننده، تاریخ انقضا و نامهای گواهی را میبینید. اگر متن خود گواهی را دارید، آن را در بخش «متن گواهی (PEM) دارید؟» همین صفحه بگذارید تا محتوایش را بخوانید.