سطح: مقدماتی تا متوسط | مناسب برای: مدیران سایت، کاربران هاست، مدیران سرور، افرادی که SSL نصب میکنند، کاربران cPanel، Plesk، DirectAdmin و کسانی که با خطاهای زنجیره گواهی یا Certificate Chain روبهرو شدهاند
وقتی برای یک سایت گواهی SSL نصب میکنید، معمولاً فقط یک فایل گواهی اصلی دریافت نمیکنید. در کنار گواهی دامنه، فایلهای دیگری هم وجود دارند که با نامهایی مثل CA Bundle، Intermediate Certificate، Chain Certificate یا Certificate Authority Bundle شناخته میشوند. این فایلها نقش مهمی در اعتماد مرورگر به گواهی SSL سایت دارند.
CA Bundle در واقع مجموعهای از گواهیهای میانی و گاهی ریشه است که کمک میکند مرورگر یا سیستم کاربر بتواند گواهی SSL سایت شما را به یک مرجع صدور گواهی قابل اعتماد وصل کند. اگر این زنجیره کامل نباشد، ممکن است سایت شما با وجود داشتن SSL، در برخی مرورگرها، موبایلها، اپلیکیشنها یا ابزارهای تست SSL با خطا نمایش داده شود.
در مقاله قدیمی همین موضوع هم توضیح داده شده بود که CA Bundle شامل گواهی میانی و ریشه است و باید همراه با گواهی اصلی روی سرور نصب شود تا زنجیره اعتماد کامل شود. در این نسخه جدید، این موضوع را کاملتر و دقیقتر بررسی میکنیم: CA Bundle چیست، Root و Intermediate Certificate چه تفاوتی دارند، چرا نصب CA Bundle مهم است، نبودن آن چه خطاهایی ایجاد میکند و چطور میتوانید کامل بودن Certificate Chain را بررسی کنید.
اگر هنوز با مفهوم گواهی امنیتی آشنا نیستید، ابتدا مقاله SSL چیست؟ را بخوانید. اگر هم قصد تهیه یا تمدید گواهی دارید، صفحه گواهی SSL پویاسازان و مقاله چگونگی انتخاب گواهینامه SSL مناسب میتوانند مکمل این راهنما باشند.
فهرست مطالب
- CA Bundle چیست؟
- چرا CA Bundle برای SSL مهم است؟
- زنجیره گواهی یا Certificate Chain چیست؟
- Root Certificate چیست؟
- Intermediate Certificate چیست؟
- فایل CA Bundle شامل چه چیزهایی است؟
- نمونه ساده از ساختار فایلهای SSL
- اگر CA Bundle نصب نشود چه اتفاقی میافتد؟
- خطاهای رایج مربوط به CA Bundle
- CA Bundle در cPanel، Plesk و DirectAdmin
- تفاوت certificate، chain و fullchain چیست؟
- چطور کامل بودن Certificate Chain را بررسی کنیم؟
- نکات مهم هنگام نصب CA Bundle
- سوالات متداول
CA Bundle چیست؟
CA Bundle فایلی است که معمولاً شامل یک یا چند گواهی میانی یا Intermediate Certificate است. این گواهیها بین گواهی اصلی سایت شما و گواهی ریشه یا Root Certificate قرار میگیرند و کمک میکنند مرورگر بتواند مسیر اعتماد را کامل کند.
وقتی یک مرجع صدور گواهی یا Certificate Authority برای دامنه شما SSL صادر میکند، مرورگر کاربر باید بتواند مطمئن شود این گواهی واقعاً از یک مرجع معتبر صادر شده است. برای این کار، مرورگر زنجیره گواهی را از گواهی سایت شما تا یک Root Certificate قابل اعتماد دنبال میکند.
اگر این مسیر کامل باشد، مرورگر سایت را امن و معتبر تشخیص میدهد. اگر یکی از بخشهای زنجیره، مخصوصاً Intermediate Certificateها، روی سرور درست نصب نشده باشد، ممکن است مرورگر هشدار امنیتی نمایش دهد.
چرا CA Bundle برای SSL مهم است؟
بسیاری از کاربران تصور میکنند نصب SSL فقط یعنی نصب یک فایل .crt یا .cer روی سرور. اما در عمل، گواهی اصلی سایت بهتنهایی همیشه کافی نیست. مرورگر باید بتواند این گواهی را به یک مرجع مورد اعتماد وصل کند.
اهمیت CA Bundle در این موارد مشخص میشود:
- کامل شدن زنجیره اعتماد SSL
- جلوگیری از خطاهای Certificate Chain در مرورگرها
- افزایش سازگاری SSL با موبایلها و مرورگرهای مختلف
- رفع خطاهای مربوط به Intermediate Certificate
- اعتماد صحیح ابزارهای تست SSL به گواهی سایت
- جلوگیری از خطا در اپلیکیشنها، APIها و سرویسهای قدیمیتر
طبق توضیح DigiCert، اگر Intermediate Certificate روی سروری که گواهی SSL نصب شده قرار نگیرد، ممکن است بعضی مرورگرها، موبایلها یا اپلیکیشنها نتوانند به گواهی اعتماد کنند. به همین دلیل نصب Intermediate Certificate برای سازگاری کامل SSL با کلاینتها ضروری است. منبع: DigiCert درباره Certificate Chain
زنجیره گواهی یا Certificate Chain چیست؟
Certificate Chain یا زنجیره گواهی، مسیر اعتماد بین گواهی سایت شما و یک گواهی ریشه معتبر است. این زنجیره معمولاً از چند بخش تشکیل میشود:
Server Certificate → Intermediate Certificate → Root Certificateیا در بعضی ساختارها:
Server Certificate → Intermediate 1 → Intermediate 2 → Root Certificateمرورگرها معمولاً به Root Certificateهای شناختهشده اعتماد دارند، چون این ریشهها در سیستمعامل یا مرورگر ذخیره شدهاند. اما گواهی سایت شما مستقیماً توسط Root صادر نمیشود؛ معمولاً توسط یک Intermediate CA صادر میشود. بنابراین برای اینکه مرورگر بتواند این ارتباط را کامل کند، باید گواهیهای میانی هم در مسیر وجود داشته باشند.
اگر زنجیره کامل نباشد، مرورگر ممکن است نتواند بفهمد گواهی سایت شما به یک Root معتبر وصل میشود یا نه؛ در نتیجه خطای SSL نمایش میدهد.
Root Certificate چیست؟
Root Certificate بالاترین نقطه اعتماد در ساختار گواهیهاست. این گواهی متعلق به یک Certificate Authority معتبر است و معمولاً در Trust Store مرورگرها و سیستمعاملها وجود دارد.
برای مثال، مرورگرها و سیستمعاملها مجموعهای از Root CAهای مورد اعتماد را از قبل میشناسند. اگر زنجیره گواهی سایت شما به یکی از این ریشههای قابل اعتماد برسد، مرورگر میتواند اعتبار SSL را تأیید کند.
Root Certificateها معمولاً مستقیماً برای صدور گواهی سایتهای معمولی استفاده نمیشوند؛ چون از نظر امنیتی بهتر است Root کمتر درگیر صدور مستقیم باشد. بهجای آن، CAها از Intermediate Certificateها برای صدور گواهیهای نهایی استفاده میکنند.
Intermediate Certificate چیست؟
Intermediate Certificate یا گواهی میانی، بین گواهی اصلی سایت و Root Certificate قرار میگیرد. این گواهی توسط Root یا یک Intermediate بالاتر امضا میشود و خودش میتواند گواهی سایت شما را امضا کند.
دلیل استفاده از Intermediate Certificate این است که Root Certificate کمتر در معرض خطر قرار بگیرد. اگر همه گواهیها مستقیماً با Root صادر شوند، ریسک امنیتی بالاتر میرود. با استفاده از Intermediateها، CAها میتوانند ساختار صدور گواهی را امنتر و قابل مدیریتتر کنند.
در عمل، همان Intermediate Certificateها هستند که معمولاً داخل CA Bundle قرار میگیرند و باید همراه گواهی اصلی سایت روی سرور نصب شوند.
فایل CA Bundle شامل چه چیزهایی است؟
فایل CA Bundle معمولاً یک فایل متنی با فرمت PEM است که یک یا چند گواهی میانی را پشت سر هم در خود دارد. هر گواهی در این فایل معمولاً با ساختاری شبیه زیر شروع و تمام میشود:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----اگر چند Intermediate لازم باشد، همه آنها پشت سر هم در یک فایل قرار میگیرند. ترتیب قرارگیری این گواهیها مهم است. معمولاً باید گواهی نزدیکتر به Server Certificate اول قرار بگیرد و سپس گواهی بالاتر در زنجیره قرار داده شود.
نام فایل CA Bundle ممکن است بسته به صادرکننده SSL متفاوت باشد:
ca-bundle.crtcabundle.crtintermediate.crtchain.crtbundle.pemfullchain.pem
همیشه نام فایل مهم نیست؛ مهم این است که محتوای درست و زنجیره صحیح داخل فایل قرار گرفته باشد.
نمونه ساده از ساختار فایلهای SSL
فرض کنید برای دامنه example.com یک گواهی SSL دریافت کردهاید. معمولاً فایلهایی شبیه این دریافت میکنید:
example_com.crt
example_com.key
ca-bundle.crtمعنی هر فایل:
| فایل | کاربرد |
|---|---|
example_com.crt | گواهی اصلی دامنه شما |
example_com.key | کلید خصوصی یا Private Key |
ca-bundle.crt | گواهیهای میانی برای کامل شدن زنجیره اعتماد |
در مقاله قدیمی، نمونهای از فایلهای Comodo مثل yourdomain.crt، گواهیهای میانی و Root آورده شده بود و توضیح داده شده بود که فایلهای میانی باید کنار هم قرار بگیرند تا CA Bundle کامل ساخته شود. همین مفهوم همچنان درست است؛ فقط نام فایلها بسته به CAهای مختلف میتواند متفاوت باشد.
اگر CA Bundle نصب نشود چه اتفاقی میافتد؟
اگر CA Bundle یا Intermediate Certificateها درست نصب نشوند، ممکن است SSL سایت شما در بعضی مرورگرها سالم به نظر برسد، اما در بعضی سیستمها خطا بدهد. دلیلش این است که بعضی مرورگرها یا سیستمعاملها ممکن است بتوانند Intermediate را از کش یا روشهای دیگر پیدا کنند، اما همه کلاینتها چنین قابلیتی ندارند.
مشکلات رایج در صورت نصب نشدن CA Bundle:
- نمایش خطای SSL در بعضی مرورگرها
- خطای Certificate Chain در ابزارهای تست SSL
- خطا در اپلیکیشنهای موبایل یا APIها
- مشکل در اتصال سرویسهای قدیمیتر به سایت
- نمایش خطاهایی مثل
SEC_ERROR_UNKNOWN_ISSUERدر Firefox - خطاهای مربوط به issuer یا intermediate certificate
برای آشنایی بیشتر با خطاهای SSL در مرورگرها، مقاله کدهای خطای SSL در فایرفاکس و مقاله آموزش غیرفعال کردن HSTS در مرورگرها را هم بخوانید.
خطاهای رایج مربوط به CA Bundle
وقتی CA Bundle ناقص یا اشتباه باشد، ممکن است خطاهای مختلفی ببینید. بعضی از این خطاها در مرورگر نمایش داده میشوند و بعضی در ابزارهای تست SSL یا لاگ اپلیکیشنها دیده میشوند.
| خطا یا پیام | علت احتمالی | راهکار |
|---|---|---|
SEC_ERROR_UNKNOWN_ISSUER | مرورگر صادرکننده گواهی را نمیشناسد یا chain ناقص است | نصب CA Bundle صحیح و بررسی زنجیره گواهی |
unable to get local issuer certificate | کلاینت نمیتواند issuer میانی را پیدا کند | نصب Intermediate Certificate روی سرور |
certificate chain incomplete | زنجیره کامل به مرورگر ارسال نمیشود | بررسی fullchain یا bundle نصبشده |
self signed certificate in certificate chain | زنجیره اشتباه یا گواهی نامعتبر در مسیر قرار گرفته است | بررسی فایلهای CA و نصب زنجیره صحیح |
| خطای SSL در موبایل اما نه در دسکتاپ | Intermediate در بعضی کلاینتها پیدا نمیشود | نصب کامل CA Bundle روی سرور |
اگر سایت شما در Chrome بدون خطا باز میشود اما در Firefox، موبایل یا ابزارهای مانیتورینگ خطا دارد، یکی از اولین مواردی که باید بررسی کنید، کامل بودن Certificate Chain است.
CA Bundle در cPanel، Plesk و DirectAdmin
در کنترل پنلهای هاستینگ معمولاً هنگام نصب SSL چند فیلد یا بخش مختلف میبینید. نام این فیلدها ممکن است کمی متفاوت باشد، اما مفهوم آنها مشابه است.
| بخش | معنی |
|---|---|
| Certificate / CRT | گواهی اصلی دامنه |
| Private Key / KEY | کلید خصوصی مربوط به CSR و گواهی |
| CA Bundle / CABUNDLE | گواهیهای میانی برای کامل شدن زنجیره |
در cPanel معمولاً هنگام نصب SSL، فیلد CA Bundle بهصورت جداگانه وجود دارد و گاهی سیستم آن را خودکار تکمیل میکند. در Plesk و DirectAdmin هم بسته به نسخه و روش نصب، ممکن است CA Bundle بهصورت chain certificate یا intermediate certificate دریافت شود.
اگر از هاست مدیریتشده استفاده میکنید، معمولاً نصب CA Bundle توسط کنترل پنل یا تیم پشتیبانی انجام میشود. اما اگر روی VPS یا سرور اختصاصی خودتان SSL نصب میکنید، باید مطمئن شوید زنجیره گواهی کامل نصب شده است. برای انتخاب سرویس مناسب، مقاله هاست چیست؟ و صفحه هاست لینوکس پویاسازان را هم ببینید.
تفاوت certificate، chain و fullchain چیست؟
در برخی سرویسها، مخصوصاً هنگام استفاده از Let’s Encrypt یا وبسرورهایی مثل Nginx، ممکن است با فایلهایی مثل cert.pem، chain.pem و fullchain.pem روبهرو شوید.
| فایل | توضیح |
|---|---|
cert.pem | فقط گواهی اصلی دامنه |
chain.pem | گواهیهای میانی یا chain |
fullchain.pem | گواهی اصلی دامنه بههمراه chain در یک فایل |
privkey.pem | کلید خصوصی گواهی |
برای بسیاری از تنظیمات Nginx، معمولاً باید از fullchain.pem برای ssl_certificate استفاده کنید، نه فقط cert.pem. اگر فقط گواهی اصلی را بدهید، ممکن است زنجیره گواهی ناقص باشد.
در Apache هم بسته به نسخه و روش تنظیم، ممکن است chain جداگانه یا همراه فایل certificate تنظیم شود. در کنترل پنلها، معمولاً این جزئیات پشت رابط گرافیکی سادهتر پنهان شدهاند.
چطور کامل بودن Certificate Chain را بررسی کنیم؟
بعد از نصب SSL، بهتر است فقط به باز شدن سایت در مرورگر خودتان اکتفا نکنید. ممکن است مرورگر شما بعضی Intermediateها را از قبل داشته باشد و خطا را نشان ندهد، اما کاربران دیگر یا ابزارهای API دچار مشکل شوند.
روشهای بررسی:
- استفاده از ابزارهای آنلاین SSL Checker
- بررسی سایت در مرورگرهای مختلف
- تست در موبایل و سیستمعاملهای متفاوت
- بررسی خروجی SSL با ابزارهایی مثل OpenSSL
- بررسی خطاهای مرورگر مثل Unknown Issuer یا Incomplete Chain
با OpenSSL میتوانید زنجیره ارسالی سرور را بررسی کنید:
openssl s_client -connect example.com:443 -servername example.com -showcertsدر خروجی این دستور باید ببینید سرور فقط گواهی دامنه را ارسال میکند یا گواهیهای میانی هم همراه آن ارسال میشوند.
اگر از CDN، Load Balancer، Reverse Proxy یا چند سرور پشت یک دامنه استفاده میکنید، SSL را روی همه لایهها بررسی کنید. گاهی SSL روی سرور اصلی درست است، اما روی CDN یا Load Balancer زنجیره کامل نیست.
نکات مهم هنگام نصب CA Bundle
برای اینکه SSL سایت بدون خطای زنجیره گواهی کار کند، این نکات را رعایت کنید:
- همیشه CA Bundle را از همان صادرکننده SSL دریافت کنید.
- Intermediate Certificateهای مربوط به همان گواهی را نصب کنید.
- ترتیب گواهیهای میانی را درست قرار دهید.
- Private Key را با CA Bundle اشتباه نگیرید.
- کلید خصوصی را هیچوقت در اختیار دیگران قرار ندهید.
- بعد از نصب SSL، سایت را با ابزارهای SSL Checker بررسی کنید.
- اگر از Nginx استفاده میکنید، معمولاً از fullchain استفاده کنید.
- اگر SSL را تمدید میکنید، CA Bundle جدید را هم بررسی کنید.
- SSL را فقط روی دامنه اصلی تست نکنید؛ نسخه www و سابدامینها را هم بررسی کنید.
برای مطالعه بیشتر درباره خطاهای SSL و تنظیمات امنیتی، دسته SSL و گواهیهای امنیتی و دسته امنیت سایت و سرور را دنبال کنید.
جمعبندی
CA Bundle یکی از بخشهای مهم نصب SSL است و نقش آن کامل کردن زنجیره اعتماد بین گواهی سایت شما و Root Certificate معتبر است. اگر این زنجیره ناقص باشد، ممکن است بعضی مرورگرها، موبایلها، اپلیکیشنها یا ابزارهای تست SSL نتوانند به گواهی سایت اعتماد کنند و خطای امنیتی نمایش دهند.
بهطور ساده، گواهی اصلی سایت شما بهتنهایی همیشه کافی نیست. باید Intermediate Certificateها هم بهدرستی روی سرور نصب شوند تا مرورگر بتواند مسیر اعتماد را تا Root Certificate معتبر دنبال کند. این همان کاری است که CA Bundle انجام میدهد.
بعد از نصب یا تمدید SSL، حتماً Certificate Chain را بررسی کنید. اگر با خطاهایی مثل Unknown Issuer، Incomplete Chain یا خطای SSL در بعضی مرورگرها روبهرو شدید، یکی از اولین مواردی که باید بررسی شود، نصب صحیح CA Bundle است.
سوالات متداول
CA Bundle چیست؟
CA Bundle فایلی است که معمولاً شامل گواهیهای میانی یا Intermediate Certificateهاست و کمک میکند زنجیره اعتماد بین گواهی SSL سایت و Root Certificate معتبر کامل شود.
آیا CA Bundle همان گواهی SSL است؟
خیر. گواهی SSL اصلی برای دامنه شما صادر میشود، اما CA Bundle شامل گواهیهای میانی است که برای تکمیل زنجیره اعتماد استفاده میشوند.
Intermediate Certificate چیست؟
Intermediate Certificate گواهی میانی بین گواهی اصلی سایت و Root Certificate است. این گواهی معمولاً توسط Root یا Intermediate بالاتر امضا میشود و گواهی سایت شما را به زنجیره اعتماد وصل میکند.
Root Certificate چیست؟
Root Certificate بالاترین نقطه اعتماد در ساختار گواهیهاست و معمولاً در Trust Store مرورگرها و سیستمعاملها وجود دارد.
اگر CA Bundle نصب نشود چه مشکلی ایجاد میشود؟
ممکن است بعضی مرورگرها، موبایلها، اپلیکیشنها یا ابزارهای تست SSL خطای زنجیره گواهی، Unknown Issuer یا Incomplete Chain نمایش دهند.
آیا همه مرورگرها به نبود CA Bundle حساس هستند؟
رفتار مرورگرها و سیستمعاملها متفاوت است. بعضی ممکن است Intermediate را از کش یا روشهای دیگر پیدا کنند، اما برای سازگاری کامل باید CA Bundle روی سرور درست نصب شود.
تفاوت chain و fullchain چیست؟
chain معمولاً شامل گواهیهای میانی است، اما fullchain شامل گواهی اصلی دامنه بههمراه گواهیهای میانی در یک فایل است.
در Nginx باید از cert استفاده کنم یا fullchain؟
در بیشتر سناریوها برای تنظیم ssl_certificate در Nginx بهتر است از fullchain.pem استفاده شود تا زنجیره گواهی کامل به کلاینت ارسال شود.
چطور بفهمم CA Bundle درست نصب شده است؟
میتوانید از ابزارهای SSL Checker، مرورگرهای مختلف یا دستور OpenSSL مثل openssl s_client -connect example.com:443 -servername example.com -showcerts استفاده کنید.
آیا هنگام تمدید SSL باید CA Bundle را هم تغییر دهم؟
بهتر است بله. هنگام تمدید SSL، CA Bundle یا chain جدیدی که صادرکننده ارائه میدهد را بررسی و در صورت نیاز جایگزین کنید.
