خطای SSL Connection در زمان نصب Directadmin
پاسخ کوتاه: خطای Unable to establish SSL Connection هنگام نصب دایرکتادمین یعنی سرور شما نتوانسته یک اتصال TLS معتبر با میزبان دانلود دایرکتادمین برقرار کند. تقریباً همیشه یکی از این چهار عامل مقصر است: قدیمی بودن گواهیهای ریشه یا OpenSSL، بسته بودن پورت ۴۴۳ خروجی، اشتباه بودن ساعت و تاریخ سیستم، و ایراد در DNS سرور. در ادامه هر چهار مورد را جداگانه تست و رفع میکنیم.
این خطا دقیقاً از کجا میآید
اسکریپت نصب دایرکتادمین — همان دستوری که در راهنمای نصب کنترل پنل دایرکت ادمین آمده — فایلهای خود را از سرورهای این شرکت دانلود میکند و این ارتباط روی HTTPS انجام میشود. اگر لایه TLS همان ابتدای کار شکست بخورد، نصبکننده پیام Unable to establish SSL Connection را چاپ میکند و متوقف میشود. نکته مهم این است که در بیشتر موارد ایراد در سمت سرور شماست و نه در فایلهای دایرکتادمین؛ پس پیش از هر کاری باید مشخص کنید کدام حلقه از زنجیره اتصال شکسته است.
پیشنیاز همه بررسیهای زیر، دسترسی روت به سرور است. اگر روی یک سرور ابری کار میکنید این دسترسی را در اختیار دارید و میتوانید همه دستورها را مستقیم اجرا کنید.
راهحل سریع و اینکه چرا باید موقت بماند
دایرکتادمین یک کلید برای رد کردن اعتبارسنجی گواهی در نظر گرفته است. با ساخت فایل زیر، نصبکننده فایلها را بدون بررسی گواهی TLS دریافت میکند:
echo 1 > /root/.insecure_download
سپس دوباره نصب دایرکتادمین را اجرا کنید. این روش معمولاً نصب را به پایان میرساند، اما در واقع شما اعتبارسنجی گواهی را خاموش کردهاید و دانلود دیگر در برابر دستکاری میانی محافظتشده نیست. بنابراین آن را فقط بهعنوان راه عبور موقت به کار ببرید، پس از پایان نصب فایل را حذف کنید و ریشه مشکل را برطرف نمایید:
rm -f /root/.insecure_download
اگر لایسنس دایرکتادمین را از آنلاین سرور تهیه کرده باشید، طبق آنچه در صفحه لایسنس دایرکتادمین اعلام شده، نصب و پیکربندی اولیه پنل رایگان انجام میشود و لازم نیست خودتان درگیر این مرحله شوید.
۱. گواهیهای ریشه یا OpenSSL قدیمی
شایعترین علت، قدیمی بودن مجموعه گواهیهای ریشه سیستم است. وقتی گواهی ریشه صادرکننده روی سرور وجود نداشته باشد، اتصال با وجود سالم بودن شبکه رد میشود. برای تست مستقیم:
openssl s_client -connect files.directadmin.com:443 -servername files.directadmin.com </dev/null
در خروجی دنبال خط Verify return code: 0 (ok) بگردید. هر کد دیگری، مثلاً unable to get local issuer certificate، یعنی زنجیره گواهی روی سرور شما تأیید نمیشود. نام میزبان دقیقی که نصبکننده به آن وصل میشود در خروجی خطا نوشته شده است؛ همان را در دستور بالا بگذارید.
برای بهروزرسانی گواهیها در خانواده RHEL (آلما لینوکس، راکی لینوکس، سنتاواس):
dnf update -y ca-certificates openssl && update-ca-trust
و در دبیان و اوبونتو:
apt update && apt install --reinstall -y ca-certificates openssl && update-ca-certificates
نسخه فعلی را با openssl version ببینید. روی توزیعهایی که دوره پشتیبانیشان تمام شده، ممکن است نسخه OpenSSL اصلاً نسخههای جدید TLS را پشتیبانی نکند و بهروزرسانی هم برایش منتشر نشود. در این حالت راهحل واقعی نصب مجدد سرور با یک نسخه پشتیبانیشده لینوکس است؛ چون این کار کل دیسک را پاک میکند، پیش از آن حتماً از دادهها نسخه پشتیبان بگیرید.
۲. بسته بودن پورت ۴۴۳ خروجی
اگر فایروال یا سیاست شبکه، ترافیک خروجی روی پورت ۴۴۳ را ببندد، اتصال پیش از تبادل گواهی قطع میشود و همین پیام ظاهر میگردد. تستهای ساده:
curl -sSI --max-time 15 https://files.directadmin.com
nc -vz files.directadmin.com 443
اگر nc نصب نیست، بدون نصب چیزی میتوانید از قابلیت داخلی شل استفاده کنید:
timeout 5 bash -c "</dev/tcp/files.directadmin.com/443" && echo open
روی سرورهایی که CSF نصب دارند، مطمئن شوید مقدار TCP_OUT در فایل /etc/csf/csf.conf شامل 443 باشد و پس از تغییر csf -r را اجرا کنید؛ اگر هنوز این فایروال را ندارید، راهنمای نصب و پیکربندی فایروال CSF مسیر کامل آن را توضیح میدهد. قوانین خام را هم با iptables -S OUTPUT مرور کنید. یک نکته کمتر دیدهشده هم متغیرهای پراکسی است؛ اگر با env | grep -i proxy مقداری برگشت و آن پراکسی در دسترس نباشد، دقیقاً همین خطا رخ میدهد.
گاهی محدودیت از شبکه بالادست است و نه از خود سرور. اگر پروژه شما به موقعیت داخل ایران وابسته نیست، اجرای نصب روی یک سرور ابری آلمان که در صفحه محصول به سازگاری با کنترلپنلهایی مانند دایرکتادمین اشاره شده، مسیر کمدردسرتری است.
۳. اختلاف ساعت و تاریخ سیستم
اعتبارسنجی گواهی مستقیماً به تاریخ سیستم وابسته است. اگر ساعت سرور چند روز یا چند ماه جلو یا عقب باشد، حتی گواهی کاملاً سالم هم «هنوز معتبر نشده» یا «منقضی» تشخیص داده میشود و اتصال TLS شکست میخورد. این حالت روی ماشینهای مجازی تازهساخته یا سرورهایی که مدتی خاموش بودهاند رایج است.
وضعیت را ببینید:
timedatectl status
date -u
اگر همگامسازی فعال نیست، سرویس زمان را نصب و روشن کنید. در خانواده RHEL نام سرویس chronyd و در دبیان و اوبونتو chrony است:
dnf install -y chrony && systemctl enable --now chronyd
apt install -y chrony && systemctl enable --now chrony
سپس با timedatectl set-ntp true همگامسازی را فعال و با chronyc tracking نتیجه را بررسی کنید. اگر منطقهٔ زمانی سرور هم اشتباه است، تنظیم TimeZone سرور لینوکس را جداگانه انجام دهید. هشدار: پرش ناگهانی ساعت روی سروری که در حال سرویسدهی است میتواند ترتیب لاگها، تسکهای زمانبندیشده و پایگاهداده را بههم بریزد؛ اگر اختلاف زیاد است بهتر است اصلاح زمان را در بازه کمترافیک انجام دهید و بعد از آن سرویسهای حساس را ریاستارت کنید.
۴. مشکلات DNS
اگر سرور نتواند نام میزبان را به IP تبدیل کند، اتصالی هم شکل نمیگیرد و خطا در همان مرحله ظاهر میشود؛ همین ریشه در مرورگر کاربر به شکل خطای Server Not Found دیده میشود. ابتدا ریزالورهای تنظیمشده را ببینید:
cat /etc/resolv.conf
سپس نام را با ریزالور فعلی و بعد با یک ریزالور عمومی تست کنید (ابزار dig در خانواده RHEL از بسته bind-utils و در دبیان از dnsutils میآید):
dig +short files.directadmin.com
dig @8.8.8.8 +short files.directadmin.com
اگر پاسخ فقط با ریزالور عمومی میآید، ایراد از ریزالور پیشفرض سرور است. توجه داشته باشید که در بسیاری از سیستمها فایل /etc/resolv.conf توسط NetworkManager یا cloud-init بازنویسی میشود، بنابراین ویرایش دستی آن ممکن است پس از ریاستارت از بین برود و باید تنظیم را در پیکربندی همان سرویس انجام دهید.
جدول تشخیص سریع
| علت | تست | رفع |
|---|---|---|
| گواهی ریشه یا OpenSSL قدیمی | openssl s_client -connect HOST:443 |
بهروزرسانی ca-certificates و openssl |
| پورت ۴۴۳ خروجی بسته | nc -vz HOST 443 |
اصلاح TCP_OUT در CSF یا قوانین iptables |
| اختلاف ساعت سیستم | timedatectl status |
فعال کردن همگامسازی با chrony |
| ایراد DNS | dig +short HOST |
اصلاح ریزالور در پیکربندی شبکه |
اگر باز هم حل نشد
خروجی کامل نصبکننده را نگه دارید و نام میزبانی که در پیام خطا آمده را جدا کنید؛ همان نام، ورودی همه تستهای بالاست. ترتیب پیشنهادی این است: اول ساعت، بعد DNS، بعد پورت خروجی و در آخر گواهیها. با این ترتیب معمولاً در چند دقیقه به علت اصلی میرسید و دیگر نیازی به خاموش کردن اعتبارسنجی گواهی نخواهید داشت.
اگر ترجیح میدهید این مسیر را خودتان طی نکنید، سرویس پشتیبانی و مدیریت سرور آنلاین سرور هم بهصورت موردی برای نصب و عیبیابی و هم بهصورت مدیریت مستمر ارائه میشود.
