دسته بندی:

ساخت کد CSR و نصب گواهینامه SSL در سی پنل و دایرکت ادمین

گواهینامه SSL را خریده‌اید و حالا فروشنده از شما «کد CSR» می‌خواهد، یا فایل‌های CRT و CA Bundle به ایمیلتان رسیده و نمی‌دانید کدام را در کدام کادر کنترل‌پنل بگذارید. مسیر کار در سی پنل و دایرکت ادمین شبیه هم است اما نام گزینه‌ها فرق دارد و یک اشتباه کوچک — مثلاً جابه‌جا وارد کردن گواهی و زنجیره واسط — باعث می‌شود سایت روی https باز نشود یا در بعضی مرورگرها و اپلیکیشن‌ها خطای امنیتی بدهد. این راهنما کل مسیر را پوشش می‌دهد: از ساخت CSR تا نصب گواهینامه SSL، انتقال گواهی موجود از پلسک، بررسی صحت نصب و ریدایرکت به https.

CSR و کلید خصوصی؛ قبل از هر کاری این را بدانید

CSR مخفف Certificate Signing Request است: یک بلوک متنی که با -----BEGIN CERTIFICATE REQUEST----- شروع می‌شود و مشخصات دامنه و سازمان شما را در خود دارد. این بلوک را برای صادرکننده گواهی (CA) می‌فرستید و در مقابل، گواهی امضاشده تحویل می‌گیرید.

نکته‌ای که خیلی‌ها از آن غافل می‌شوند این است که هم‌زمان با ساخت CSR یک کلید خصوصی (Private Key) هم ساخته می‌شود و این دو به هم چفت‌اند. گواهی صادرشده فقط با همان کلید خصوصی روی سرور نصب می‌شود. پس:

  • کلید خصوصی را برای هیچ‌کس نفرستید؛ نه برای صادرکننده گواهی، نه نماینده فروش، نه پشتیبانی. هیچ‌کدام به آن نیازی ندارند و فقط CSR کافی است.
  • اگر کلید خصوصی را گم کنید، گواهی صادرشده عملاً بی‌مصرف است و باید درخواست Reissue بدهید و از اول CSR بسازید.
  • اگر احتمال می‌دهید کلید خصوصی جایی درز کرده، آن گواهی را نزد صادرکننده باطل (Revoke) و با کلید تازه دوباره صادر کنید.

موقع پر کردن فرم CSR، در هر پنلی که باشید، این چند نکته یکسان است:

  • در فیلد دامنه دقیقاً همان دامنه‌ای را وارد کنید که هنگام خرید گواهی ثبت کرده‌اید. example.com و www.example.com از دید گواهی دو نام متفاوت‌اند؛ اگر هر دو را لازم دارید مطمئن شوید گواهی خریداری‌شده هر دو را پوشش می‌دهد.
  • فقط از حروف و ارقام لاتین استفاده کنید. حروف فارسی یا کاراکترهای خاص در فیلدهای شهر، استان و نام شرکت باعث خطا در تولید یا رد شدن درخواست می‌شود.
  • کد کشور را دوحرفی وارد کنید (برای ایران IR).
  • طول کلید را کمتر از ۲۰۴۸ بیت انتخاب نکنید. آموزش‌های قدیمی گاهی کلید ۱۰۲۴ بیتی یا امضای SHA-1 پیشنهاد می‌کنند؛ هر دو سال‌هاست منسوخ شده‌اند و صادرکننده‌های معتبر چنین درخواستی را قبول نمی‌کنند.

ساخت کد CSR در سی پنل

  • وارد سی پنل شوید و در بخش Security روی SSL/TLS کلیک کنید. همه کارهای مربوط به کلید، CSR و گواهی از همین صفحه انجام می‌شود.
  • روی «Generate, view, or delete SSL certificate signing requests» کلیک کنید.
  • در صفحه بعد بخش Generate a New Certificate Signing Request (CSR) را پر کنید. اگر از قبل کلید خصوصی جداگانه‌ای ساخته‌اید، آن را از فهرست کشویی Key انتخاب کنید؛ در غیر این صورت گزینه ساخت کلید جدید ۲۰۴۸ بیتی را دست‌نخورده بگذارید.
  • در کادر Domains دامنه را وارد کنید. برای گواهی چنددامنه‌ای، هر دامنه را در یک خط جداگانه بنویسید.
  • بقیه فیلدها را پر کنید: City، State، Country، Company و Company Division و Email.
  • روی Generate کلیک کنید. صفحه بعد کد CSR تولیدشده را نشان می‌دهد؛ کل بلوک را از خط BEGIN تا خط END کپی کنید.

سی پنل کلید خصوصی متناظر را خودش نگه می‌دارد و در همان صفحه SSL/TLS زیر بخش کلیدها می‌بینیدش، بنابراین لازم نیست جداگانه ذخیره‌اش کنید. اما اگر قرار است سرور یا هاست را عوض کنید، یک نسخه از آن را در جای امن نگه دارید تا مجبور به صدور دوباره گواهی نشوید.

ساخت کد CSR در دایرکت ادمین

در پوسته قدیمی Enhanced، گزینه SSL Certificates زیر بخش Advanced Features بود. در پوسته Evolution که امروز پیش‌فرض دایرکت ادمین است همان گزینه در بخش Account Manager قرار گرفته؛ ساده‌ترین راه این است که در کادر جستجوی بالای پنل عبارت SSL را تایپ کنید.

  • اگر اصلاً گزینه SSL Certificates را نمی‌بینید، یعنی SSL برای پکیج کاربری شما فعال نشده است و باید از ریسلر یا مدیر سرور بخواهید فعالش کند.
  • وارد صفحه SSL Certificates شوید و اگر چند دامنه دارید، دامنه مورد نظر را از انتخابگر بالای صفحه مشخص کنید.
  • گزینه Create A Certificate Request را انتخاب کنید، فرم را با همان قواعد بالا پر کنید و Save بزنید.
  • دایرکت ادمین بلافاصله کد CSR و کلید خصوصی را نمایش می‌دهد. هر دو را در یک فایل متنی ساده ذخیره کنید؛ CSR را برای صادرکننده می‌فرستید و کلید خصوصی در مرحله نصب لازم می‌شود. فایل کلید را جایی نگه دارید که فقط خودتان دسترسی دارید — نه در پوشه عمومی سایت، نه در چت پشتیبانی و نه در پیوست ایمیل.

یک هشدار مهم: ساخت CSR جدید در دایرکت ادمین، محتوای فعلی کادر گواهی و کلید همان دامنه را جایگزین می‌کند. اگر روی آن دامنه گواهی فعالی دارید، پیش از زدن Save یک کپی از محتوای فعلی بردارید تا در صورت نیاز بتوانید برگردانید.

ارسال CSR و دریافت فایل‌ها

کد CSR را در فرم سفارش صادرکننده گواهی وارد کنید، مرحله اعتبارسنجی دامنه (تأیید ایمیلی، رکورد DNS یا فایل روی سایت) را انجام دهید و منتظر صدور بمانید. چیزی که در نهایت تحویل می‌گیرید معمولاً دو بخش است:

  • گواهی سایت (CRT) — فایلی مثل yourdomain.crt که با -----BEGIN CERTIFICATE----- شروع می‌شود.
  • زنجیره واسط (CA Bundle یا CABUNDLE) — یک یا چند گواهی میانی که گواهی شما را به گواهی ریشه معتبر وصل می‌کنند. بدون این بخش، سایت در مرورگر دسکتاپ ممکن است سالم به نظر برسد ولی روی موبایل و اپلیکیشن‌ها خطا بدهد.

فایل‌ها را با یک ویرایشگر متن ساده باز کنید. با Word یا نرم‌افزارهای مشابه بازشان نکنید؛ نویسه‌های اضافه و شکستن خودکار خطوط ساختار PEM را خراب می‌کند و نصب با خطا مواجه می‌شود.

نصب گواهینامه SSL در سی پنل

  • در سی پنل به Security » SSL/TLS بروید و روی «Install and Manage SSL for your site (HTTPS)» کلیک کنید؛ همان صفحه‌ای که به Manage SSL sites هم شناخته می‌شود.
  • از فهرست Domain دامنه مورد نظر را انتخاب کنید. اگر CSR را در همین سی پنل ساخته باشید، معمولاً کادر کلید خصوصی با دکمه Autofill by Domain خودکار پر می‌شود.
  • محتوای فایل CRT را در کادر Certificate (CRT) و محتوای CA Bundle را در کادر Certificate Authority Bundle (CABUNDLE) بچسبانید. این دو را جابه‌جا وارد نکنید؛ رایج‌ترین علت شکست نصب همین است.
  • در پایین صفحه روی Install Certificate کلیک کنید. اگر همه چیز درست باشد پیام موفقیت نمایش داده می‌شود و از همان صفحه می‌توانید گواهی نصب‌شده را مدیریت یا حذف کنید.

اگر ترجیح می‌دهید به‌جای کپی و پیست، فایل گواهی را آپلود کنید، این کار در صفحه نصب انجام نمی‌شود. به صفحه SSL/TLS برگردید و روی «Generate, view, upload, or delete SSL certificates» کلیک کنید؛ در آن صفحه بخش Upload a New Certificate با یک انتخابگر فایل وجود دارد. فایل CRT را انتخاب و روی Upload Certificate کلیک کنید. گواهی آپلودشده به مخزن گواهی‌های حساب اضافه می‌شود، ولی هنوز روی دامنه نصب نشده؛ برای نصب باید به «Install and Manage SSL for your site» برگردید و گواهی را از همان‌جا روی دامنه بنشانید.

اگر کادر کلید خصوصی خالی ماند و خودکار پر نشد، یعنی کلید متناظر روی این سرور نیست. در این حالت باید کلید را از جایی که CSR را ساخته‌اید بیاورید و دستی در همان کادر بچسبانید؛ بدون کلید، نصب انجام نمی‌شود. اگر خطایی گرفتید که علتش را پیدا نکردید، لاگ خطا را همراه دامنه برای پشتیبانی سرویس میزبانی بفرستید.

اگر دنبال گواهی رایگان هستید، سی پنل امکان صدور خودکار گواهی را هم دارد و اصلاً نیازی به CSR و این مراحل نیست؛ روش کار در نصب SSL رایگان Let’s Encrypt در سی پنل توضیح داده شده است.

نصب گواهینامه SSL در دایرکت ادمین

  • به همان صفحه SSL Certificates برگردید و دامنه را انتخاب کنید.
  • گزینه Paste a pre-generated certificate and key را انتخاب کنید.
  • در کادر بزرگ، ابتدا کلید خصوصی و بلافاصله زیر آن گواهی (CRT) را قرار دهید. هر بلوک باید خط BEGIN و END خودش را داشته باشد و بین بلوک‌ها متن اضافه‌ای نباشد. سپس Save بزنید.
  • برای زنجیره واسط، پایین همان صفحه لینک «Click Here to paste a CA Root Certificate» را باز کنید، محتوای CA Bundle را آنجا بچسبانید، تیک Use a CA Cert را بزنید و ذخیره کنید.

بعد از ذخیره، در همان صفحه جمله‌ای شبیه «SSL is currently enabled for this domain. You can disable it here» می‌بینید. روی لینک here کلیک کنید تا به تنظیمات دامنه بروید و مطمئن شوید گزینه‌ای که private_html را به‌صورت symlink به public_html وصل می‌کند انتخاب شده است. اگر این گزینه فعال نباشد، نسخه https سایت به پوشه دیگری اشاره می‌کند و ممکن است صفحه خالی یا محتوای قدیمی ببینید. در نسخه‌های جدید دایرکت ادمین این حالت معمولاً از پیش فعال است، ولی یک بار بررسی‌اش ارزش دارد.

انتقال گواهی موجود از پلسک، بدون ساخت CSR جدید

اگر گواهی معتبری دارید که قبلاً روی سرور دیگری — مثلاً پلسک — نصب شده، لازم نیست CSR جدید بسازید و گواهی را دوباره صادر کنید. گواهی به دامنه گره خورده است نه به سرور؛ تنها چیزی که باید همراهش منتقل شود کلید خصوصی است. روند کار دقیقاً مثل نصب یک گواهی تازه است، با این تفاوت که مرحله ساخت CSR را ندارید و در عوض باید کلید را هم خودتان وارد کنید.

قبل از هر کاری دامنه را در سی پنل اضافه کنید. تا وقتی دامنه در پنل مقصد وجود نداشته باشد، در فهرست Domain صفحه نصب SSL دیده نمی‌شود. اگر هنوز درباره خود مهاجرت تصمیم نگرفته‌اید، مقایسه کنترل پنل پلسک و سی پنل را مرور کنید.

خروجی گرفتن از پلسک

  • وارد پلسک شوید. در نسخه‌های امروزی (Obsidian) مسیر Websites & Domains ← دامنه ← SSL/TLS Certificates است. در نسخه‌های قدیمی همین بخش زیر Add-On Services قرار داشت.
  • روی نام گواهی مورد نظر کلیک کنید.
  • از گزینه مشاهده یا دانلود اطلاعات گواهی استفاده کنید و محتوای Private key، Certificate و در صورت وجود CA certificate را در یک فایل متنی ساده کپی کنید. دقت کنید هر سه بلوک را جدا از هم و با خطوط BEGIN و END کاملشان بردارید.

وارد کردن در سی پنل

به Security » SSL/TLS » Install and Manage SSL for your site بروید، دامنه را انتخاب کنید، کلید خصوصی را در کادر Private Key، گواهی را در کادر Certificate و زنجیره را در کادر Certificate Authority Bundle بگذارید و روی Install Certificate کلیک کنید. بعد از چند لحظه گواهی نصب می‌شود و پیام موفقیت را می‌بینید.

اگر به کلید خصوصی سرور مبدأ دسترسی ندارید یا فایلش را ندارید، انتقال ممکن نیست و تنها راه، درخواست Reissue از صادرکننده با یک CSR تازه است.

بررسی صحت نصب

نصب موفق در پنل به معنی درست بودن همه چیز نیست. سایت را با https:// باز کنید و قفل مرورگر را ببینید، بعد زنجیره را هم بررسی کنید. روی هر سروری که دسترسی SSH دارید، این دستور مشخصات گواهی نصب‌شده را نشان می‌دهد:

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

در خروجی، subject باید دامنه شما باشد، issuer نام صادرکننده و notAfter تاریخ انقضا. برای بررسی زنجیره، همان دستور را بدون بخش دوم (یعنی بدون | openssl x509 ...) اجرا کنید و در انتهای خروجی دنبال Verify return code: 0 (ok) بگردید. کد غیرصفر همیشه به معنی ناقص بودن زنجیره نیست؛ به متن کنار آن نگاه کنید: unable to get local issuer certificate معمولاً یعنی CA Bundle ناقص یا نصب‌نشده است، ولی certificate has expired یعنی گواهی منقضی شده و کدهای مربوط به عدم اعتماد ممکن است فقط به قدیمی بودن مخزن گواهی‌های ریشه روی همان دستگاهی برگردد که دستور را اجرا کرده‌اید، نه به سرور شما.

چون این دستور زنجیره را با مخزن ریشه دستگاه خودتان می‌سنجد، برای قضاوت نهایی یک ابزار بیرونی هم امتحان کنید. سرویس‌های آنلاین بررسی SSL مثل SSL Labs همین اطلاعات را به‌همراه وضعیت زنجیره از دید یک کاربر واقعی نشان می‌دهند و اگر SSH ندارید تنها راه شما هستند.

ریدایرکت http به https

تا وقتی ریدایرکت را تنظیم نکرده‌اید، سایت همچنان روی نسخه ناامن باز می‌شود و بازدیدکننده اصلاً به گواهی شما نمی‌رسد. در سی پنل، در صفحه Domains برای هر دامنه کلید Force HTTPS Redirect وجود دارد و روشن کردنش ساده‌ترین راه است. در دایرکت ادمین هم در تنظیمات دامنه گزینه‌ای برای اجبار https هست.

پیش از رفتن سراغ ریدایرکت، مطمئن شوید https:// سایت واقعاً بدون خطا باز می‌شود. ریدایرکت ۳۰۱ را مرورگرها مدت طولانی کش می‌کنند؛ اگر آن را روی گواهی خراب فعال کنید، بازدیدکننده‌ای که یک بار ریدایرکت را گرفته حتی بعد از برگرداندن تنظیمات هم تا مدتی به نسخه معیوب https هدایت می‌شود و پاک کردن این کش از دست شما خارج است. تا وقتی از سالم بودن نصب مطمئن نشده‌اید، در قانون زیر به‌جای R=301 از R=302 استفاده کنید و بعد از تست، آن را به ۳۰۱ تغییر دهید.

اگر این گزینه را در پنل خود نداشتید، همین قانون را در .htaccess ریشه سایت قرار دهید. پیش از ویرایش یک کپی از فایل فعلی بگیرید؛ یک خطای نگارشی در .htaccess کل سایت را با خطای ۵۰۰ از کار می‌اندازد و برگرداندن نسخه سالم سریع‌ترین راه نجات است. در وردپرس این قانون باید بالاتر از بلوک # BEGIN WordPress بنشیند، وگرنه وردپرس هنگام بازنویسی آن بلوک قانون شما را پاک می‌کند:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

اگر سایت پشت CDN یا لود بالانسر است، شرط بالا همیشه درست تشخیص داده نمی‌شود و ممکن است حلقه ریدایرکت بسازد. در آن حالت از هدر پروتکل استفاده کنید:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

در وردپرس، بعد از فعال شدن ریدایرکت، آدرس‌های siteurl و home را هم در تنظیمات به https تغییر دهید، وگرنه فایل‌های قالب و تصاویر با آدرس http فراخوانی می‌شوند و مرورگر بابت محتوای ترکیبی (mixed content) قفل را ناقص نشان می‌دهد.

خطاهای رایج و علت آن‌ها

  • پیام عدم تطابق گواهی و کلید — گواهی از CSR دیگری صادر شده و به این کلید نمی‌خورد. اگر به فایل‌ها دسترسی دارید، با این دو دستور بررسی کنید؛ خروجی هر دو باید کاملاً یکسان باشد:
    openssl x509 -noout -modulus -in yourdomain.crt | openssl md5
    openssl rsa -noout -modulus -in yourdomain.key | openssl md5

    این دو دستور فقط برای کلید RSA کار می‌کنند. اگر گواهی‌تان ECDSA است، خروجی به‌جای مقدار، پیام Not an RSA key می‌دهد؛ در آن حالت از این دو استفاده کنید که برای هر دو نوع کلید درست است:

    openssl x509 -noout -pubkey -in yourdomain.crt | openssl md5
    openssl pkey -pubout -in yourdomain.key | openssl md5
  • سایت در دسکتاپ سالم است ولی در موبایل یا اپلیکیشن خطا می‌دهد — تقریباً همیشه یعنی CA Bundle نصب نشده یا ناقص است.
  • قفل مرورگر ناقص یا هشدار محتوای ترکیبی — بخشی از منابع صفحه هنوز با http لود می‌شود. آدرس‌ها را در دیتابیس و قالب اصلاح کنید.
  • خطای عدم تطابق نام دامنه — گواهی برای example.com صادر شده و کاربر www.example.com را باز کرده (یا برعکس). گواهی باید هر دو نام را پوشش بدهد.
  • گواهی منقضی شده — تاریخ انقضا را با دستور بالا ببینید و پیش از رسیدن به آن، تمدید و دوباره نصب کنید. تمدید در پنل صادرکننده به‌تنهایی کافی نیست؛ گواهی جدید باید روی سرور هم نصب شود.

مطالب مرتبط