سایتهای .ir گواهی SSL را از کجا میگیرند؟
۷۱٫۱٪ گواهیهای SSL دامنههای .ir از Let's Encrypt است که رایگان است.
در ۷ روز گذشته ۵۷۷٬۷۵۶ گواهی برای دامنههای .ir ثبت شده است.
بهروز شده ۲ ساعت پیش
گواهی SSL یعنی چه؟
کارت شناسایی سایت است، با مهر یک صادرکنندهی معتبر. مرورگر با آن میفهمد این سایت همان است که ادعا میکند، و قفل کنار نشانی روشن میشود. هر گواهی عمومی باید در لاگهای شفافیت (Certificate Transparency) ثبت شود؛ عددهای این صفحه از همان لاگهاست.
هر روز چند گواهی برای دامنههای .ir، ۳۰ روز گذشته.
ستون امروز هنوز کامل نشده است و کوتاهتر دیده میشود.
منبع: Cloudflare Radar · CC BY-NC 4.0 · شفافیت گواهی (Certificate Transparency)
چه کسانی صادر میکنند ۷ روز گذشته.
چند روز اعتبار و چرا تمدید باید خودکار باشد.
وقتی تقریبا همهی گواهیها کمتر از ۱۰۰ روز اعتبار دارند، تمدید دستی یعنی هر چند هفته یک بار خطر قطع شدن قفل سایت. ابزارهای تمدید خودکار برای همین ساخته شدهاند.
ستارهدار یا یک نام؟
نوع کلید و نوع تأیید ۷ روز گذشته.
یعنی صادرکننده فقط بررسی کرده دامنه مال درخواستکننده است، نه هویت شرکتش.
منبع: Cloudflare Radar · CC BY-NC 4.0 · شفافیت گواهی، دامنههای .ir
سوالهایی که میپرسند.
- برای دامنهی ir هم SSL رایگان میشود گرفت؟
- بله. بیشتر گواهیهایی که برای دامنههای .ir صادر میشود از Let's Encrypt است که رایگان گواهی میدهد؛ سهمش بالای همین صفحه است.
- گواهی SSL چیست؟
- کارت شناسایی سایت است: به مرورگر نشان میدهد این سایت همان است که ادعا میکند، و اتصال را رمزدار میکند تا کسی وسط راه نتواند آن را بخواند.
- گواهی SSL چقدر اعتبار دارد و تمدیدش چطور است؟
- تقریبا همهی گواهیهای .ir بین ۴۷ تا ۱۰۰ روز اعتبار دارند. با این مدت، تمدید باید خودکار باشد، نه دستی.
- wildcard یعنی چه؟
- گواهی ستارهدار (*.example.ir) که همهی زیردامنهها را با هم میپوشاند.
- این عددها از کجا میآید؟
- از لاگهای شفافیت گواهی (Certificate Transparency): هر گواهی عمومی باید در این لاگها ثبت شود، و Cloudflare Radar آنها را میشمارد.
بیشتر
گواهی SSL برای دامنه ir: SSL چیست، SSL رایگان Let's Encrypt، تمدید خودکار، wildcard، ECDSA یا RSA و انواع گواهی
گواهی SSL مثل کارت شناسایی مهرخوردهی یک سایت است: به مرورگر شما ثابت میکند سایتی که باز کردهاید همان است که نامش را نوشتهاید. صفحهی گواهی SSL سایتهای .ir در رادار سفید نشان میدهد هر روز چند گواهی برای دامنههای .ir صادر میشود، چه کسانی صادرشان میکنند، چند روز اعتبار دارند و چه نوعیاند. در این راهنما با زبان ساده میگوییم گواهی چیست، HTTPS با آن چه میکند، چرا هر گواهی عمومی در دفترهای همگانی ثبت میشود، SSL رایگان برای دامنه ir چطور به دست میآید و چرا تمدیدش باید خودکار باشد.
این صفحه دقیقا چه چیزی را نشان میدهد؟
پیش از توضیح، بهتر است بدانید عددهای صفحهی گواهی SSL سایتهای .ir از کجا آمدهاند. عددی که منبعش معلوم نباشد، به جای کمک، آدم را گیج میکند.
دادهها از Cloudflare Radar میآید، با مجوز CC BY-NC 4.0. Cloudflare یک شرکت بزرگ اینترنتی است و بخشی عمومی به اسم Radar دارد که عددهای اینترنت را منتشر میکند. یکی از این عددها از دفترهای همگانی گواهیها میآید، که پایینتر میگوییم چه هستند. رادار سفید این عددها را برای دامنههای .ir میگیرد، هر ۶ ساعت یک بار تازهشان میکند و ۳۰ روز نگه میدارد.
وقتی صفحه را باز میکنید، به Cloudflare وصل نمیشوید. صفحه از روی نسخهای ساخته میشود که رادار سفید پیشتر گرفته است. اگر یک بار Cloudflare در دسترس نباشد، صفحه این را میگوید: «دسترسی به کلادفلر به دلیل اختلال قطع است و ممکن است به خاطر قطعی اینترنت بینالملل باشد». آن وقت آخرین دادهای که داشته را نشان میدهد و دربارهاش با زمان گذشته حرف میزند.
در این صفحه اینها را میبینید:
- سهم گواهیهای رایگان. از گواهیهایی که در ۷ روز گذشته برای دامنههای .ir صادر شده، چند درصد را Let's Encrypt داده است. Let's Encrypt خودش اعلام کرده که برای گواهیهایش پولی نمیگیرد. عدد امروز بالای همین صفحه است.
- تعداد گواهیها در هر روز. ستونهای ۳۰ روز گذشته، با تعداد خام.
- صادرکنندهها. سهم هر شرکتی که گواهیها را صادر کرده، در ۷ روز گذشته.
- مدت اعتبار. گواهیها چند روز اعتبار دارند، در چند بازه.
- ستارهدار یا نه. چه سهمی از گواهیها wildcard هستند.
- نوع کلید. سهم ECDSA و RSA.
- نوع تأیید. سهم DV و OV.
هر کدام از این واژهها را پایینتر یکی یکی باز میکنیم. اول برویم سراغ خود گواهی.
گواهی SSL چیست؟ کارت شناسایی مهرخوردهی سایت
فرض کنید کسی در خانهتان را میزند و میگوید مأمور ادارهی برق است. از کجا میفهمید راست میگوید؟ از او کارت شناسایی میخواهید. ولی هر کسی میتواند یک کارت با اسم خودش چاپ کند. چیزی که کارت را معتبر میکند، مهر ادارهای است که شما به آن اعتماد دارید.
گواهی SSL دقیقا همین کارت است، برای سایتها. وقتی گوشی شما سایتی مثل example.ir را باز میکند، سایت یک کارت دیجیتال نشان میدهد که روی آن نوشته شده:
- این کارت برای کدام نام است. مثلا example.ir و www.example.ir.
- کلید عمومی سایت. یک عدد بلند که فقط صاحب واقعی سایت، جفت مخفیاش را دارد. پایینتر میگوییم به چه کار میآید.
- از کی تا کی معتبر است. تاریخ شروع و تاریخ پایان.
- چه کسی آن را مهر کرده. نام صادرکننده.
- خود مهر. یک امضای دیجیتال که صادرکننده با کلید مخفی خودش زده است.
به صادرکنندهی گواهی مرجع صدور گواهی یا CA میگویند، کوتاه شدهی Certificate Authority. مرورگرها و سیستمعاملها فهرستی از CAهای مورد اعتماد را از پیش با خودشان دارند. وقتی کارت سایتی را میبینند، مهرش را با این فهرست میسنجند. اگر مهر از یکی از همینها باشد، نام کارت با نام سایت جور باشد و تاریخش نگذشته باشد، قفل نشان میدهند. اگر نه، صفحهی هشدار میآید.
SSL یا TLS؟ دو اسم برای یک چیز
شاید دیده باشید که بعضی جاها به جای SSL مینویسند TLS. SSL نام قراردادهای قدیمیتر بود که دیگر کنار گذاشته شدهاند. جانشینشان TLS است، کوتاه شدهی Transport Layer Security، یعنی «امنیت لایهی انتقال». تازهترین نسخهی آن TLS 1.3 است که در RFC 8446 نوشته شده. ولی اسم SSL در زبان مردم مانده، و هنوز همه میگویند «گواهی SSL». در عمل، گواهی SSL و گواهی TLS یکی است. اینکه از ایران با کدام نسخهی TLS به سایتها وصل میشوند، در صفحهی نسخههای TLS آمده است.
HTTPS با گواهی چه میکند؟
HTTP زبانی است که مرورگر و سایت با آن حرف میزنند. HTTPS همان زبان است، ولی داخل یک لولهی قفلدار که TLS میسازد. حرف S در آخر آن یعنی Secure، یعنی «امن». در صفحهی HTTPS و نسخههای HTTP میبینید چه سهمی از درخواستهای ایران با HTTPS میرود.
وقتی آدرسی با https:// را باز میکنید، پیش از اینکه حتی یک کلمه از صفحه بیاید، این اتفاقها در کسری از ثانیه میافتد:
- سلام. مرورگر به سایت میگوید میخواهد امن حرف بزند و چه روشهایی بلد است.
- نشان دادن کارت. سایت گواهیاش را میفرستد.
- سنجیدن کارت. مرورگر نگاه میکند مهر از یک CA مورد اعتماد باشد، نام با آدرس جور باشد و تاریخ نگذشته باشد.
- ثابت کردن صاحب کارت. سایت با کلید مخفیاش چیزی را امضا میکند. مرورگر با کلید عمومیِ داخل گواهی میسنجد که امضا درست است. این یعنی کسی که کارت را نشان داده، واقعا صاحب آن است و فقط یک کپی از کارت ندارد.
- ساختن کلید مشترک. دو طرف با هم یک کلید تازه میسازند که فقط خودشان دارند و از آن به بعد همهی حرفها را با آن رمز میکنند.
پس گواهی دو کار مهم میکند. اول، هویت: شما مطمئن میشوید با خود سایت حرف میزنید. دوم، زمینهی رمزگذاری را فراهم میکند: کسی که وسط راه است، مثلا در یک شبکهی وایفای عمومی، نمیتواند رمز عبور یا شمارهای را که وارد میکنید بخواند یا عوض کند.
کلید عمومی و کلید مخفی یعنی چه؟
یک صندوق نامه با یک شکاف را تصور کنید. هر کسی میتواند نامه را از شکاف بیندازد، ولی فقط کسی که کلید صندوق را دارد میتواند آن را باز کند. کلید عمومی مثل شکاف صندوق است که همه میبینند. کلید مخفی مثل کلید در صندوق است که فقط صاحبش دارد.
در امضای دیجیتال کار برعکس است: فقط صاحب کلید مخفی میتواند امضا کند، ولی هر کسی با کلید عمومی میتواند بسنجد که امضا واقعی است. این دو کلید با هم ساخته میشوند و از کلید عمومی نمیشود کلید مخفی را پیدا کرد. برای همین است که کلید مخفی سایت هیچوقت نباید از سرور بیرون برود.
Certificate Transparency: دفتر همگانی همهی گواهیها
حالا یک سوال مهم: اگر یک CA اشتباه کند، یا کسی با فریب از او گواهی برای سایت شما بگیرد، شما از کجا میفهمید؟ در گذشته راهی نبود. گواهی صادر میشد و فقط کسی که آن را گرفته بود خبر داشت.
برای حل این مشکل، روشی به اسم Certificate Transparency یا به اختصار CT ساخته شد، یعنی «شفافیت گواهی». نسخهی اول آن در RFC 6962 آمد و نسخهی دومش در RFC 9162 که در دسامبر ۲۰۲۱ منتشر شد. ایده ساده است: هر گواهی عمومی باید در چند دفتر همگانی نوشته شود. به این دفترها لاگ CT میگویند.
این دفترها سه ویژگی دارند:
- همه میتوانند بخوانندشان. هر کسی میتواند ببیند چه گواهیهایی برای چه نامهایی صادر شده است.
- فقط میشود به آنها اضافه کرد. چیزی که نوشته شد را نمیشود پاک یا عوض کرد. RFC 9162 این را با ساختاری ریاضی به اسم درخت مرکل (Merkle tree) تضمین میکند. کافی است بدانید این ساختار باعث میشود اگر کسی بخواهد یک خط قدیمی را بیسروصدا عوض کند، همه بفهمند.
- کسانی هستند که مدام نگاهشان میکنند. RFC 9162 به اینها پایشگر (monitor) میگوید: برنامههایی که دفترها را میخوانند و اگر گواهی مشکوکی ببینند، خبر میدهند.
چرا هر گواهی عمومی ثبت میشود؟
چون مرورگرها این را خواستهاند. مثلا سیاست CT مرورگر Chrome میگوید همهی گواهیهای TLS عمومی باید با این قاعده جور باشند، وگرنه Chrome آنها را قبول نمیکند. CA پیش از صادر کردن گواهی، نسخهای از آن را به دفترها میفرستد و از هر دفتر یک رسید امضاشده میگیرد که به آن SCT میگویند. این رسیدها داخل گواهی گذاشته میشوند. مرورگر وقتی گواهی را میبیند، رسیدها را هم نگاه میکند. طبق همان سیاست Chrome، رسیدها باید از دستکم دو گردانندهی متفاوت دفتر باشند.
نتیجه این است که امروز، تقریبا هر گواهی عمومیای که برای سایتی صادر میشود، در این دفترهای همگانی پیدا میشود. عددهای صفحهی گواهی SSL رادار سفید هم از همین دفترها آمدهاند: Cloudflare دفترها را میخواند و گواهیهای دامنههای .ir را میشمارد. یعنی این صفحه، برخلاف بیشتر صفحههای رادار، به ترافیکی که از شبکهی Cloudflare میگذرد بند نیست. منبعش دفترهای همگانی است.
این برای صاحب سایت چه فایدهای دارد؟
دو فایدهی مستقیم:
- میتوانید ببینید چه کسی برای دامنهی شما گواهی گرفته. اگر گواهیای ببینید که شما یا همکارانتان نگرفتهاید، نشانهی مشکل است و باید پیگیری کنید.
- میتوانید فهرست زیردامنههایتان را ببینید. گاهی یک زیردامنهی قدیمی فراموش شده؛ دفترها یادشان هست.
همین ویژگی یک نکته هم دارد: هر نامی که در گواهی عمومی بنویسید، عمومی میشود. اگر زیردامنهای دارید که نمیخواهید اسمش دیده شود، مثلا پنل آزمایشی، بدانید با گرفتن گواهی عمومی، نامش در دفترها میآید. پایینتر میگوییم چطور دفترها را برای دامنهی خودتان بگردید.
SSL رایگان: Let's Encrypt و ACME
سالها گرفتن گواهی SSL کاری دستی و پولی بود: فرم پر میکردید، پول میدادید، فایل گواهی را با ایمیل میگرفتید و روی سرور میگذاشتید. سال بعد هم باید همهی این کارها را تکرار میکردید.
Let's Encrypt این را عوض کرد. Let's Encrypt یک مرجع صدور گواهی است که یک سازمان غیرانتفاعی به اسم ISRG آن را میگرداند. در پرسشهای پرتکرار Let's Encrypt آمده که برای گواهیهایش هزینهای نمیگیرد. برای همین، در صفحهی رادار سفید، سهم Let's Encrypt (با نام مالکش ISRG) همان سهم گواهیهای رایگان حساب میشود. صادرکنندههای دیگری هم ممکن است گواهی بیپول بدهند، ولی رادار فقط چیزی را رایگان مینامد که صادرکنندهاش خودش رایگان بودن را اعلام کرده باشد.
ACME یعنی چه؟ گرفتن گواهی بدون دخالت دست
راز Let's Encrypt فقط رایگان بودن نیست. این است که گرفتن گواهی را خودکار کرد. برای این کار قراردادی ساخته شد به اسم ACME، کوتاه شدهی Automatic Certificate Management Environment، یعنی «محیط مدیریت خودکار گواهی». این قرارداد در RFC 8555 نوشته شده است.
با ACME، یک برنامهی کوچک روی سرور شما با CA حرف میزند، ثابت میکند دامنه مال شماست، گواهی را میگیرد، روی وبسرور میگذارد و پیش از تمام شدن اعتبارش، دوباره همین کار را میکند. معروفترین این برنامهها certbot است، ولی برنامههای دیگر و وبسرورهایی هم هستند که ACME را خودشان بلدند. همهی اینها یک کار را میکنند: شما یک بار تنظیم میکنید و بعد کاری به گواهی ندارید.
چطور ثابت میشود دامنه مال شماست؟
CA باید مطمئن شود کسی که گواهی example.ir را میخواهد، واقعا دامنه را در اختیار دارد. ACME برای این کار «چالش» دارد، یعنی یک آزمون کوچک. صفحهی انواع چالش Let's Encrypt سه نوع را شرح میدهد:
- HTTP-01. CA یک رمز به برنامهی شما میدهد. برنامه آن را در فایلی زیر آدرس http://example.ir/.well-known/acme-challenge/ میگذارد. CA از بیرون آن فایل را از درگاه ۸۰ باز میکند. اگر پیدایش کرد، یعنی سرور این دامنه در اختیار شماست. سادهترین روش است.
- DNS-01. برنامهی شما یک رکورد TXT به اسم _acme-challenge.example.ir در DNS دامنه میسازد. DNS دفترچهی تلفن اینترنت است که نام دامنه را به آدرس سرور ربط میدهد. اگر CA آن رکورد را ببیند، یعنی DNS دامنه در اختیار شماست.
- TLS-ALPN-01. آزمون از درگاه ۴۴۳ و داخل خود TLS انجام میشود. به کار کسانی میآید که درگاه ۸۰ را باز ندارند.
درگاه یا پورت یعنی شمارهی در ورودی یک سرور. یک سرور چندین در دارد و هر سرویس پشت یکی منتظر است. درگاه ۸۰ برای HTTP و درگاه ۴۴۳ برای HTTPS است.
برای دامنهی .ir هم SSL رایگان میشود گرفت؟
این پرتکرارترین سوال سازندههای سایت ایرانی است. جواب را خود دادههای این صفحه میدهند: در بخش صادرکنندهها میبینید که Let's Encrypt برای دامنههای .ir گواهی صادر کرده است، و سهمش بالای صفحه آمده. Let's Encrypt در پرسشهای پرتکرارش میگوید برای هر سروری که از نام دامنه استفاده میکند گواهی میدهد. شرطش همان آزمونی است که بالا گفتیم: CA باید بتواند از بیرون، فایل یا رکورد DNS شما را ببیند.
پس اگر سرور شما از اینترنت جهانی در دسترس است و DNS دامنهتان درست کار میکند، برای دامنهی .ir هم گواهی رایگان میگیرید. اگر آزمون شکست بخورد، معمولا دلیلش یکی از اینهاست:
- درگاه ۸۰ سرور از بیرون بسته است، یا دیوارهی آتش (فایروال) جلوی درخواست CA را میگیرد. در این حالت DNS-01 یا TLS-ALPN-01 را امتحان کنید.
- رکورد DNS دامنه هنوز به سرور تازه اشاره نمیکند، یا تغییرش هنوز همه جا نرسیده است.
- وبسرور آدرس /.well-known/acme-challenge/ را به جای دیگری میفرستد.
مدت اعتبار گواهی: چرا گواهیها کوتاهعمر شدهاند؟
هر گواهی تاریخ پایان دارد. وقتی تاریخ بگذرد، مرورگرها آن را قبول نمیکنند و بازدیدکننده به جای سایت شما، صفحهی هشدار میبیند. پس گواهی را باید پیش از تمام شدن تمدید کرد. تمدید در واقع گرفتن یک گواهی تازه است که جای قبلی را میگیرد.
در بخش مدت اعتبار صفحهی رادار سفید میبینید گواهیهای تازهی دامنههای .ir در چه بازههایی از مدت اعتبار میافتند. عدد امروز بالای همین صفحه است.
گواهیهای Let's Encrypt چند روزهاند؟
طبق پرسشهای پرتکرار Let's Encrypt، گواهیهای پیشفرض آن ۹۰ روز اعتبار دارند، و گواهیهای ۶ روزه هم برای کسانی که بخواهند هست. Let's Encrypt پیشنهاد میکند هر ۶۰ روز تمدید کنید تا هیچوقت به روز آخر نرسید.
این عددها هم دارند کوتاهتر میشوند. Let's Encrypt در نوشتهای با عنوان Decreasing Certificate Lifetimes to 45 Days در ۲ دسامبر ۲۰۲۵ این برنامه را اعلام کرد:
- ۱۳ مه ۲۰۲۶: گواهیهای ۴۵ روزه برای کسانی که خودشان بخواهند.
- ۱۰ فوریهی ۲۰۲۷: گواهیهای پیشفرض ۶۴ روزه میشوند.
- ۱۶ فوریهی ۲۰۲۸: گواهیهای پیشفرض ۴۵ روزه میشوند.
قاعدهی همهی CAها: از ۳۹۸ روز تا ۴۷ روز
این فقط تصمیم Let's Encrypt نیست. قاعدههای گواهیهای عمومی را جمعی به اسم CA/Browser Forum مینویسد، که CAها و سازندههای مرورگرها عضوش هستند. این جمع در آوریل ۲۰۲۵ رأیگیریای به اسم Ballot SC-081v3 را تصویب کرد. طبق آن، بیشترین مدت اعتبار گواهیهای عمومی، که تا پیش از آن ۳۹۸ روز بود، مرحله به مرحله کم میشود:
- از ۱۵ مارس ۲۰۲۶: حداکثر ۲۰۰ روز.
- از ۱۵ مارس ۲۰۲۷: حداکثر ۱۰۰ روز.
- از ۱۵ مارس ۲۰۲۹: حداکثر ۴۷ روز.
همان رأی، مدتی را که CA میتواند به آزمون قبلی مالکیت دامنه تکیه کند هم کم میکند، تا در پایان به ۱۰ روز برسد. یعنی نه فقط گواهی، که آزمون مالکیت دامنه هم باید مرتب تکرار شود.
چرا کوتاهتر بهتر است؟
Let's Encrypt در همان نوشته دلیلش را گفته: کوتاه بودن اعتبار گواهی، اندازهی آسیب را وقتی چیزی لو میرود محدود میکند و باطل کردن گواهیها را کاراتر میکند. به زبان ساده:
- اگر کلید مخفی سایت لو برود، کسی که آن را دزدیده فقط تا پایان اعتبار گواهی میتواند خودش را جای سایت جا بزند. ۴۵ روز خیلی کمتر از یک سال است.
- باطل کردن گواهی در عمل همیشه کار نمیکند. مرورگرها همیشه نمیپرسند گواهی باطل شده یا نه. گواهی کوتاهعمر خودش زود از کار میافتد.
- اطلاعات تازه میماند. اگر دامنه دست به دست شود، گواهی صاحب قبلی زودتر تمام میشود.
پس تمدید دستی دیگر جواب نمیدهد
با گواهی یکساله، میشد سالی یک بار یادآور گذاشت و دستی تمدید کرد. با گواهی ۴۵ روزه، باید سالی هشت بار یا بیشتر این کار را کرد، و کافی است یک بار یادتان برود تا سایت با صفحهی هشدار باز شود. Let's Encrypt هم در همان نوشته میگوید با این مدتها تمدید دستی عملی نیست.
پس تمدید باید خودکار باشد. چند پیشنهاد عملی:
- از یک برنامهی ACME استفاده کنید و بگذارید خودش زمانبندی را مدیریت کند.
- روز ثابت تمدید را در کد ننویسید. مثلا ننویسید «هر ۶۰ روز»، چون مدت گواهیها عوض میشود. Let's Encrypt پیشنهاد میکند برنامه از ARI استفاده کند، یعنی ACME Renewal Information: CA خودش به برنامه میگوید کی وقت تمدید است. اگر برنامهتان ARI را بلد نیست، حدود دوسوم عمر گواهی که گذشت تمدید کنید.
- بعد از تمدید، وبسرور را بازخوانی کنید. گواهی تازه روی دیسک کافی نیست؛ وبسرور باید آن را بخواند.
- برای شکست تمدید هشدار بگذارید. اگر تمدید خودکار بیصدا شکست بخورد، چند هفته بعد میفهمید. یک هشدار ساده که چند روز مانده به پایان خبرتان کند، کافی است.
گواهی wildcard (ستارهدار) چیست؟
یک گواهی معمولی برای نامهای مشخص است: مثلا example.ir و www.example.ir. اگر زیردامنهی دیگری مثل shop.example.ir بسازید، باید آن را هم به گواهی اضافه کنید یا گواهی جدا بگیرید.
گواهی wildcard یا ستارهدار برای *.example.ir صادر میشود. ستاره یعنی «هر چیزی»: این گواهی برای shop.example.ir، blog.example.ir و هر زیردامنهی یکطبقهی دیگر کار میکند. دو نکته دارد که خیلیها نمیدانند:
- ستاره فقط یک طبقه را میپوشاند. *.example.ir برای a.b.example.ir کار نمیکند.
- ستاره خود دامنهی اصلی را نمیپوشاند. *.example.ir برای خود example.ir کار نمیکند. برای همین معمولا هر دو نام را در یک گواهی میگذارند.
Let's Encrypt wildcard فقط با DNS-01
Let's Encrypt گواهی wildcard رایگان میدهد، ولی با یک شرط. در پرسشهای پرتکرارش آمده که گواهی wildcard باید با چالش DNS-01 گرفته شود. صفحهی انواع چالش هم میگوید HTTP-01 و TLS-ALPN-01 برای نامهای ستارهدار کار نمیکنند.
دلیلش منطقی است: با گذاشتن یک فایل روی یک سرور، فقط ثابت میکنید آن یک نام در اختیار شماست. ولی گواهی ستارهدار برای همهی زیردامنهها، حتی آنهایی که هنوز نساختهاید، کار میکند. پس CA باید ببیند خود DNS دامنه، که همهی زیردامنهها از آن میآیند، در اختیار شماست.
در عمل یعنی برنامهی ACME شما باید بتواند رکورد DNS بسازد. اگر سرویس DNS شما راهی برای ساختن خودکار رکورد دارد، تمدید wildcard هم خودکار میشود. اگر نه، باید هر بار دستی رکورد بسازید، که با گواهیهای کوتاهعمر دردسر بزرگی است.
wildcard بگیرم یا نه؟
بستگی دارد. چند نکته برای تصمیم:
- wildcard نام زیردامنهها را در دفترهای CT نمیآورد. فقط *.example.ir ثبت میشود. اگر نمیخواهید نام زیردامنههایتان دیده شود، این یک فایده است.
- ولی یک کلید برای همه است. اگر کلید مخفی گواهی wildcard از یک سرور لو برود، همهی زیردامنهها در خطرند. با گواهیهای جدا، آسیب به همان یک نام محدود میماند.
- وقتی زیردامنهها زیادند و مدام عوض میشوند، wildcard کار را سادهتر میکند.
سهم گواهیهای ستارهدار در میان گواهیهای .ir را در صفحهی رادار سفید میبینید.
کلید ECDSA یا RSA؟
یادتان هست که هر گواهی یک کلید عمومی دارد؟ این کلید با یکی از دو روش ریاضی ساخته میشود: RSA یا ECDSA. هر دو امناند، ولی فرق دارند.
RSA روش قدیمیتر است و نامش از حرف اول سه سازندهاش آمده. امنیتش بر این است که تجزیهی یک عدد خیلی بزرگ به دو عدد اول بسیار سخت است. کلیدهای RSA بلندند؛ امروز رایجترینشان ۲۰۴۸ بیتی است.
ECDSA روش تازهتر است، کوتاه شدهی Elliptic Curve Digital Signature Algorithm، یعنی «امضای دیجیتال با منحنی بیضوی». اسمش ترسناک است، ولی کافی است بدانید ریاضی دیگری پشتش است که با کلید خیلی کوتاهتر، همان امنیت را میدهد. رایجترین کلید ECDSA در وب ۲۵۶ بیتی است (منحنی P-256).
کلید کوتاهتر، با همان امنیت
طبق جدول توصیهی NIST SP 800-57، کلید منحنی بیضوی ۲۵۶ بیتی تقریبا هماندازهی کلید RSA با ۳۰۷۲ بیت امنیت میدهد. یعنی کلید ECDSA رایج، از کلید RSA رایج هم امنتر است و هم خیلی کوتاهتر.
این کوتاهی در عمل به چه کار میآید؟
- گواهی و پیامهای دستدادن کوچکترند. در اتصالهای کند یا اینترنت همراه، هر بایت کمتر کمک میکند.
- امضا روی سرور سریعتر است. سروری که هر ثانیه هزاران اتصال تازه دارد، کار کمتری میکند.
پس چرا هنوز RSA هست؟
چون دستگاهها و نرمافزارهای خیلی قدیمی ممکن است ECDSA را بلد نباشند. بعضی سرورها برای اطمینان دو گواهی کنار هم میگذارند، یکی ECDSA و یکی RSA، و وبسرور به هر مرورگر همانی را میدهد که بلد است. برای بیشتر سایتهای امروز، ECDSA انتخاب خوبی است، ولی اگر بازدیدکنندههایتان دستگاههای خیلی قدیمی دارند، گزارش خطاهای اتصال را نگاه کنید.
نوع کلید را هنگام گرفتن گواهی انتخاب میکنید. برنامههای ACME معمولا یک گزینه برای نوع کلید دارند. سهم ECDSA و RSA در گواهیهای .ir در صفحهی رادار سفید آمده است.
انواع گواهی SSL: DV، OV و EV
وقتی میگویند «انواع SSL»، معمولا منظورشان این است که CA پیش از صادر کردن گواهی، چه چیزی را سنجیده است. سه نوع هست:
- DV (Domain Validation)، یعنی تأیید دامنه. CA فقط سنجیده که درخواستدهنده دامنه را در اختیار دارد، با همان آزمونهایی که بالا گفتیم. روی گواهی فقط نام دامنه هست. همهی گواهیهای Let's Encrypt از این نوعاند؛ در پرسشهای پرتکرارش آمده که برنامهای برای OV یا EV ندارد.
- OV (Organization Validation)، یعنی تأیید سازمان. CA علاوه بر دامنه، سنجیده که سازمانی با این نام واقعا وجود دارد، و نام سازمان در گواهی نوشته میشود.
- EV (Extended Validation)، یعنی تأیید گسترده. سنجش سختگیرانهتری از سازمان.
آیا OV و EV امنترند؟
نه از نظر رمزگذاری. لولهی قفلدار HTTPS با هر سه نوع یکی است. فرق فقط در چیزی است که در گواهی دربارهی صاحبش نوشته شده.
زمانی مرورگرها برای EV نوار سبز با نام شرکت نشان میدادند. طبق ویکیپدیا، Chrome از نسخهی ۷۷ و Firefox از نسخهی ۷۰، هر دو در ۲۰۱۹، این نشان ویژه را برداشتند. امروز بازدیدکنندهی معمولی فرقی بین DV و EV در نوار آدرس نمیبیند، مگر اینکه جزئیات گواهی را باز کند.
صفحهی رادار سفید سهم DV و OV را در میان گواهیهای .ir نشان میدهد. برای بیشتر سایتها، از وبلاگ تا فروشگاه، گواهی DV همان کاری را میکند که لازم است.
گواهی سایت خودتان را در مرورگر ببینید
لازم نیست ابزار خاصی داشته باشید. هر مرورگری گواهی سایتی را که باز کرده نشان میدهد:
- سایت خودتان را با https:// باز کنید.
- روی نشانهی کنار آدرس، سمت چپ نوار آدرس، بزنید. در Chrome این نشانه چند سال پیش از قفل به یک شکل تنظیمات تغییر کرد، ولی جایش همان است.
- گزینهای مثل «اتصال امن است» (Connection is secure) را بزنید.
- گزینهای مثل «گواهی معتبر است» (Certificate is valid) را بزنید. پنجرهای باز میشود که جزئیات گواهی را نشان میدهد.
در این پنجره اینها را نگاه کنید:
- Issued To یا Subject: گواهی برای کدام نام است. اگر نام سایت شما در فهرست نامها (Subject Alternative Name) نباشد، مرورگر هشدار میدهد.
- Issued By یا Issuer: صادرکننده کیست. مثلا Let's Encrypt.
- Validity Period: از کی تا کی معتبر است. اگر روز پایان نزدیک است و تمدید خودکار ندارید، وقت تنظیمش است.
- کلید عمومی (Public Key): در بخش جزئیات میبینید RSA است یا ECDSA (گاهی با نام EC یا Elliptic Curve).
- زنجیرهی گواهی: گواهی سایت شما را یک گواهی میانی مهر کرده، و آن را گواهی ریشهای که در مرورگر هست. اگر سرور شما گواهی میانی را نفرستد، بعضی دستگاهها هشدار میدهند حتی اگر مرورگر خودتان مشکلی نشان ندهد.
چند خطای رایج و معنیشان
- NET::ERR_CERT_DATE_INVALID: تاریخ گواهی گذشته، یا ساعت دستگاه بازدیدکننده اشتباه است. اولی یعنی تمدید شکست خورده.
- NET::ERR_CERT_COMMON_NAME_INVALID: نامی که باز شده در گواهی نیست. مثلا گواهی برای example.ir است و کسی www.example.ir را باز کرده.
- NET::ERR_CERT_AUTHORITY_INVALID: مرورگر مهر را نمیشناسد. یا گواهی خودامضاست، یا گواهی میانی فرستاده نشده.
گواهیهای دامنهی خودتان را در دفترهای CT پیدا کنید
حالا که میدانید هر گواهی عمومی در دفترهای همگانی ثبت میشود، میتوانید همهی گواهیهایی را که برای دامنهی شما صادر شده ببینید. یکی از ابزارهای رایگان رایج برای جستجو در این دفترها crt.sh است:
- صفحهی crt.sh را باز کنید.
- در جعبهی جستجو، نام دامنهتان را بنویسید، مثلا example.ir.
- برای دیدن گواهیهای همهی زیردامنهها، علامت درصد و نقطه را پیش از نام بگذارید: %.example.ir. علامت درصد در این جستجو یعنی «هر چیزی».
- فهرستی میبینید با تاریخ صدور، تاریخ پایان، نامها و صادرکنندهی هر گواهی. روی هر ردیف بزنید تا جزئیاتش را ببینید.
در این فهرست دنبال چه باشید؟
- صادرکنندهای که نمیشناسید. اگر شما همیشه از یک CA گواهی گرفتهاید و ناگهان گواهیای از CA دیگری میبینید، از تیمتان بپرسید. ممکن است کسی در تیم کاری کرده باشد، یا ممکن است مشکل باشد.
- زیردامنهای که فراموش کردهاید. شاید سرور قدیمیای هنوز روشن است.
- فاصلهی تمدیدها. اگر گواهیها منظم صادر شدهاند، تمدید خودکارتان کار میکند. اگر فاصلهای افتاده، شاید یک بار تمدید شکست خورده است.
یک نکته: معمولا برای هر گواهی دو ردیف میبینید. یکی پیشگواهی (precertificate) است، یعنی همان نسخهای که CA پیش از صدور به دفترها فرستاد تا رسید بگیرد، و دیگری خود گواهی. این تکراری بودن عادی است.
جلوگیری پیشاپیش: رکورد CAA
اگر میخواهید فقط CAهای مشخصی بتوانند برای دامنهتان گواهی بدهند، میتوانید رکوردی به اسم CAA در DNS دامنه بگذارید. CAA کوتاه شدهی Certification Authority Authorization است، یعنی «اجازهی مرجع صدور»، و در RFC 8659 آمده. در این رکورد مینویسید کدام CAها اجازه دارند. CAها پیش از صدور باید این رکورد را نگاه کنند. Let's Encrypt هم صفحهای دربارهی CAA دارد که نام درست خودش را برای این رکورد گفته. دفترهای CT بعد از صدور خبرتان میکنند؛ CAA پیش از صدور جلو را میگیرد. این دو با هم کاملاند.
عددهای صفحهی رادار سفید را چطور بخوانیم؟
حالا که واژهها را میشناسید، چند نکته برای خواندن درست عددها:
- تعداد روزانه، تعداد صدور است، نه تعداد سایتها. یک سایت ممکن است در یک ماه چند گواهی بگیرد: برای زیردامنههای مختلف، یا با تمدید. یک سایت دیگر ممکن است در این ۳۰ روز هیچ گواهی تازهای نگرفته باشد چون گواهی قبلیاش هنوز معتبر است. پس این عدد تعداد سایتهای .ir با HTTPS نیست.
- بالا و پایین شدن روزانه عادی است. چون گواهیها مدت مشخصی دارند و بیشترشان خودکار تمدید میشوند، تعداد صدور میتواند موج داشته باشد.
- سهم صادرکنندهها مال ۷ روز گذشته است. سهم یک CA یعنی از همهی گواهیهای صادرشده برای .ir در این هفته، چند درصد را او داده. این سهم گواهیهاست، نه سهم سایتها.
- نام صادرکننده نام مالک CA است. یک سازمان ممکن است چند گواهی میانی با نامهای مختلف داشته باشد. رادار آنها را زیر نام مالکشان، مثلا ISRG برای Let's Encrypt، جمع میکند.
- فقط گواهیهای عمومی. گواهیهایی که یک شرکت برای شبکهی داخلی خودش میسازد در دفترهای همگانی نیستند و در این عدد هم نیستند.
چند پرسش کوتاه
SSL چیست و چگونه کار میکند، در یک جمله؟
گواهی SSL کارت شناسایی مهرخوردهی سایت است: مرورگر مهر را میسنجد، از سایت میخواهد ثابت کند صاحب کارت است، و بعد با هم یک کلید مخفی میسازند تا حرفهایشان رمز شود.
SSL رایگان برای دامنه ir هست؟
بله. دادههای همین صفحه نشان میدهد Let's Encrypt برای دامنههای .ir گواهی صادر میکند. شرطش این است که سرور یا DNS شما از بیرون برای آزمون مالکیت در دسترس باشد.
گواهی رایگان از گواهی پولی ضعیفتر است؟
نه از نظر رمزگذاری. گواهی DV رایگان همان رمزگذاری گواهی DV پولی را دارد. فرق گواهیهای OV و EV در چیزی است که CA دربارهی سازمان سنجیده، نه در قدرت قفل.
تمدید SSL رایگان چطور است؟
با یک برنامهی ACME، تمدید خودکار است. یک بار تنظیم کنید، بگذارید برنامه خودش زمانش را بفهمد، و برای شکست تمدید هشدار بگذارید.
چرا عددهای این صفحه را درصد درصد نمیگویید؟
چون عددها هر ۶ ساعت عوض میشوند. عدد امروز بالای همین صفحه است.
این صفحه کار Cloudflare است؟
نه. رادار سفید عددها را از Cloudflare Radar میگیرد و خودش نشان میدهد. دادهها از Cloudflare Radar میآید، با مجوز CC BY-NC 4.0.
خلاصه در چند خط
- گواهی SSL (یا TLS) کارت شناسایی مهرخوردهی سایت است. HTTPS با آن هویت سایت را میسنجد و راه رمزگذاری را باز میکند.
- هر گواهی عمومی در دفترهای همگانی Certificate Transparency ثبت میشود (RFC 9162)، چون مرورگرها این را میخواهند. شما هم میتوانید گواهیهای دامنهتان را در crt.sh ببینید.
- Let's Encrypt گواهی رایگان میدهد و با ACME (RFC 8555) گرفتن و تمدیدش خودکار است. دادهها نشان میدهد برای .ir هم صادر میکند.
- مدت اعتبار گواهیها کوتاهتر میشود: طبق CA/Browser Forum، تا ۱۵ مارس ۲۰۲۹ به ۴۷ روز میرسد. تمدید دستی دیگر عملی نیست.
- گواهی wildcard همهی زیردامنههای یکطبقه را میپوشاند و در Let's Encrypt فقط با DNS-01 گرفته میشود.
- کلید ECDSA کوتاهتر از RSA است و همان امنیت یا بیشتر را میدهد.
- DV، OV و EV در چیزی که CA سنجیده فرق دارند، نه در قدرت رمزگذاری.
برای دیدن عددهای امروز، به صفحهی گواهی SSL سایتهای .ir بروید. برای پروتکلها، صفحههای HTTPS و HTTP و نسخههای TLS، و برای بقیهی عددهای اینترنت ایران، صفحهی اصلی رادار سفید را ببینید. دادهها از Cloudflare Radar میآید، با مجوز CC BY-NC 4.0.