SSL و امنیت

نصب SSL در دایرکت ادمین رایگان با Let's Encrypt

نصب SSL رایگان در دایرکت ادمین با Let's Encrypt چند کلیک بیشتر نیست، به شرطی که دامنه به همان سرور اشاره کند و پورت 80 باز باشد. بیشتر خطاها از تایید ناموفق دامنه می آیند و راه رفع بیشترشان ساده است.

نوشته تیم فنی پیکوهاستبه روزرسانی: ۳ آبان ۱۴۰۵۸ دقیقه مطالعه

پاسخ کوتاه

برای نصب SSL رایگان در دایرکت ادمین وارد سطح کاربر شوید، بخش SSL Certificates را باز کنید و گزینه Let's Encrypt را برای دامنه انتخاب کنید. دامنه باید به IP سرور اشاره کند و پورت 80 باز باشد. بعد از صدور، ریدایرکت https را فعال و تمدید خودکار را بررسی کنید.

نصب SSL در دایرکت ادمین با Let's Encrypt رایگان است و با انتخاب یک گزینه در پنل انجام می شود. وقتی صدور گواهی شکست می خورد، معمولا یکی از این سه علت در کار است: دامنه هنوز به سرور اشاره نمی کند، پورت 80 بسته است یا پروکسی Cloudflare جلوی تایید دامنه را گرفته. هاست های اشتراکی پیکوهاست با cPanel کار می کنند و این راهنما برای کسی است که روی سرور مجازی یا اختصاصی خودش دایرکت ادمین نصب کرده است.

قبل از شروع چه چیزهایی لازم است؟

Let's Encrypt قبل از صدور گواهی باید مطمئن شود دامنه واقعا با شما و روی همین سرور است. روش معمول این است که یک فایل کوچک در مسیر /.well-known/acme-challenge/ ساخته می شود و Let's Encrypt از اینترنت آن را باز می کند. برای این که تایید جواب بدهد، چند شرط باید برقرار باشد:

  • رکورد A دامنه و www به IP همین سرور اشاره کند. اگر هنوز DNS درست نشده، راهنمای اتصال دامنه به هاست را ببینید.
  • پورت 80 روی سرور و فایروال باز باشد. تایید از پورت 80 انجام می شود، حتی اگر بعدا همه چیز روی https برود.
  • دامنه را در دایرکت ادمین به حساب کاربر اضافه کرده باشید.
  • هیچ قاعده ریدایرکت یا امنیتی مسیر .well-known را نبندد و همه درخواست ها را به صفحه دیگری نفرستد.

با دستور nslookup دامنه-شما یا ابزارهای آنلاین DNS بررسی کنید که IP درست برگردد. اگر IP قدیمی یا IP دیگری نشان داده می شود، صبر کنید یا DNS را اصلاح کنید و بعد سراغ گواهی بروید.

نصب Let's Encrypt در دایرکت ادمین

با نام کاربری حساب وارد دایرکت ادمین شوید. آدرس معمول https://hostname:2222 است. در بخش Account Manager روی SSL Certificates بزنید. در بعضی اسکین ها و نسخه ها این بخش از جای دیگری هم قابل دسترسی است. نام دقیق منوها ممکن است تفاوت کند، پس اگر عین این اسم ها را ندیدید، دنبال بخشی با عبارت SSL بگردید.

در صفحه SSL Certificates چند گزینه هست: گواهی خودامضا، درخواست گواهی از مرجع صدور و گزینه Free & automatic certificate from Let's Encrypt. گزینه Let's Encrypt را انتخاب کنید. اگر این گزینه را نمی بینید، مدیر سرور باید آن را فعال کند. کادر دامنه ها را بررسی کنید. معمولا دامنه اصلی و www پیش فرض اند. اگر زیر دامنه ای هم لازم است، آن را در همین فهرست فعال کنید. روی Save بزنید.

در صورت موفقیت، پیام صدور گواهی نشان داده می شود و بعد از چند ثانیه سایت با https باز می شود. اگر پیام خطا آمد، متن کامل آن را بخوانید. بیشتر علت ها همان شرط های بالاست.

گواهی wildcard

گواهی wildcard، که همه زیر دامنه ها را با یک گواهی پوشش می دهد، تایید از طریق DNS می خواهد. در دایرکت ادمین این امکان به نسخه و تنظیم سرور بستگی دارد و در کل DNS باید روی همین سرور مدیریت شود. اگر DNS شما جای دیگری، مثلا Cloudflare است، گواهی wildcard در دایرکت ادمین به سادگی صادر نمی شود. اگر فقط چند زیر دامنه مشخص دارید، ساده ترین راه این است که همه را به صورت جداگانه در فهرست دامنه های گواهی بنویسید.

فعال کردن ریدایرکت https

بعد از نصب گواهی، سایت با هر دو آدرس http و https باز می شود. برای اینکه بازدیدکننده همیشه به نسخه امن برود، گزینه ریدایرکت را فعال کنید. دو جا ممکن است باشد: در صفحه SSL Certificates گزینه Force SSL with https redirect، یا در بخش Domain Setup با انتخاب دامنه و فعال کردن همین گزینه. یکی از این دو در نسخه شما هست. تیک را بزنید و ذخیره کنید.

اگر تیک را زدید ولی ریدایرکت کار نکرد، تیک را بردارید، ذخیره کنید، دوباره فعال و ذخیره کنید. گاهی این خاموش و روشن کردن تنظیم سرور وب را دوباره می سازد و مشکل را حل می کند. اگر نشد، موضوع را به مدیر سرور بگویید.

راه دیگر ریدایرکت با فایل .htaccess است. روش و اشتباه های رایج آن در راهنمای ریدایرکت http به https با htaccess آمده است. استفاده همزمان از گزینه پنل و قانون htaccess می تواند حلقه ریدایرکت بسازد. اگر مرورگر ERR_TOO_MANY_REDIRECTS نشان داد، راهنمای این خطا را ببینید.

خطاهای رایج و راه رفع

تایید دامنه ناموفق است

این خطا زیاد پیش می آید. بررسی کنید:

  • رکورد A دامنه به IP همین سرور اشاره کند و تغییرات DNS رسیده باشد.
  • پورت 80 در فایروال سرور و شبکه ارائه دهنده باز باشد.
  • مسیر /.well-known/acme-challenge/ با ریدایرکت یا قانون htaccess بسته نشده باشد.
  • رکورد AAAA (IPv6) قدیمی یا اشتباه نداشته باشید. اگر دامنه یک AAAA دارد که به سرور دیگری اشاره می کند، تایید می تواند از آن مسیر برود و شکست بخورد. آن را حذف یا درست کنید.
  • دامنه واقعا به حساب کاربر اضافه شده باشد. دامنه ای که فقط ثبت شده و در پنل نیست، پوشه سایت ندارد.

بعد از رفع، می توانید دوباره تلاش کنید. اما پشت سر هم تلاش نکنید. Let's Encrypt برای تایید ناموفق پشت سر هم محدودیت می گذارد و بعد از چند بار شکست باید مدتی صبر کنید.

دامنه پشت Cloudflare است

اگر پروکسی Cloudflare (ابر نارنجی) روشن است، درخواست تایید از Cloudflare عبور می کند و گاهی با ریدایرکت یا قانون امنیتی مسدود می شود. ساده ترین راه این است که موقتا پروکسی را خاموش کنید (ابر خاکستری)، گواهی را صادر کنید و بعد پروکسی را روشن کنید. به یاد داشته باشید که تمدید بعدی هم ممکن است با پروکسی روشن دوباره شکست بخورد، پس بعد از اولین تمدید تاریخ گواهی را نگاه کنید. بعد از روشن کردن، حالت SSL در Cloudflare را روی Full یا Full (strict) بگذارید. حالت Flexible با ریدایرکت https روی سرور حلقه می سازد.

گواهی صادر شد ولی مرورگر هشدار می دهد

چند علت دارد. اگر آدرس را بدون www باز کرده اید و گواهی فقط برای www صادر شده، یا برعکس، هشدار می بینید. هر دو را در گواهی بیاورید. گاهی هم مرورگر نسخه قدیمی را کش کرده است. با پنجره ناشناس یا مرورگر دیگر امتحان کنید. علت های دیگر هشدار در راهنمای your connection is not private آمده است.

سایت وردپرسی است و بعد از SSL به هم ریخت

اگر سایت وردپرس است و بعد از فعال شدن https تصاویر یا استایل بارگذاری نمی شود، آدرس سایت در تنظیمات وردپرس را به https تغییر بدهید و لینک های قدیمی http را اصلاح کنید. مشکل در راهنمای mixed content وردپرس توضیح داده شده است.

گواهی را از خط فرمان بررسی کنید

مرورگر ممکن است نسخه قدیمی را کش کرده باشد. برای دیدن گواهی ای که سرور واقعا ارائه می دهد، از سرور یا از کامپیوتر خودتان این دستور را اجرا کنید و example.com را عوض کنید:

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -dates

این دستور روی لینوکس و مک کار می کند. در ویندوز به جای 2>/dev/null عبارت 2>nul را بگذارید، البته ویندوز باید OpenSSL داشته باشد.

خروجی دو چیز نشان می دهد: صادرکننده گواهی که برای Let's Encrypt باید نام همین مرجع باشد، و تاریخ شروع و پایان اعتبار. اگر تاریخ پایان نزدیک است یا صادرکننده خودامضا نشان داده می شود، گواهی درست نصب نشده است. اگر چند دامنه روی یک سرور دارید، مقدار -servername را حتما بنویسید، چون سرور بر اساس آن گواهی دامنه را انتخاب می کند و بدون آن ممکن است گواهی پیش فرض سرور را ببینید.

چند دامنه و زیر دامنه روی یک حساب

اگر چند دامنه به یک حساب کاربر اضافه کرده اید، گواهی هر دامنه جدا صادر می شود. برای دامنه تازه باید دوباره همین مسیر را بروید و دامنه جدید را انتخاب کنید. زیر دامنه ها هم باید یا در فهرست همان گواهی باشند یا گواهی جدا بگیرند. بعد از ساخت زیر دامنه تازه، قبل از این که گواهی بخواهید رکورد A آن را در DNS بررسی کنید. زیر دامنه ای که هنوز به سرور اشاره نمی کند، تایید را رد می کند و فقط تلاش ناموفق ثبت می شود.

تمدید گواهی

گواهی Let's Encrypt مدت اعتبار کوتاه دارد. در حال حاضر 90 روز است و ممکن است در آینده کوتاه تر شود، پس تمدید باید خودکار باشد. دایرکت ادمین گواهی را با یک وظیفه زمان بندی شده خودش تمدید می کند و این وظیفه باید روی سرور اجرا شود. با این حال این موارد را هر چند وقت یک بار بررسی کنید:

  • تاریخ پایان گواهی را در مرورگر ببینید. روی نماد قفل بزنید و جزئیات گواهی را باز کنید.
  • بعد از تغییر IP سرور یا انتقال دامنه، تمدید ممکن است به خاطر نامطابقت DNS شکست بخورد.
  • اگر قانون فایروال یا ریدایرکت جدیدی اضافه کرده اید، یک بار صدور را دستی تکرار کنید تا مطمئن شوید هنوز کار می کند.

یک یادآوری جدا برای تاریخ پایان گواهی هم بگذارید. اگر نظارت خودکار می خواهید، خدمت مانیتورینگ سرور را ببینید.

گواهی پنل 2222 جدا از گواهی سایت ها

گواهی دامنه ها با گواهی خود دایرکت ادمین فرق دارد. اگر هنگام ورود به hostname:2222 هشدار گواهی می بینید، این به معنای مشکل در سایت های کاربران نیست. گواهی نام میزبان سرور را مدیر سرور تنظیم می کند. اگر مدیر سرور شما هستید، برای نام میزبان هم گواهی معتبر بگیرید تا هنگام ورود هشدار نبینید. روش این کار در مستندات رسمی دایرکت ادمین در docs.directadmin.com آمده و نام منوها در نسخه های مختلف فرق می کند.

اگر سرور شما هنوز دایرکت ادمین ندارد یا تنظیم آن را می خواهید به ما بسپارید، خدمت نصب و کانفیگ دایرکت ادمین را ببینید.