# TLS سرٹیفکیٹس Webship میں: دی امبیڈڈ ACME CA
ایک TLS سرٹیفیکیٹ دو کام کرتا ہے: یہ کنکشن کو انکرپٹ کرنے میں مدد دیتا ہے اور کلائنٹ کو بتاتا ہے کہ یہ کس شناخت سے بات کر رہا ہے۔ انکرپشن مضبوط ہو سکتی ہے جبکہ اعتماد کا فیصلہ سامعین کے لیے غلط ہو سکتا ہے۔ اسی وجہ سے سرٹیفیکیٹ آٹومیشن ایک سوال سے شروع ہونی چاہیے: کس کو اس سائٹ پر اعتماد کرنا چاہیے؟
Webship 1.4.0 ہر مرتب کردہ سائٹ کے لیے وہ انتخاب خود سے کرتا ہے۔ ایک عوامی ویب سائٹ براؤزر پر بھروسہ شدہ ACME سرٹیفکیٹ استعمال کر سکتی ہے، ایک داخلی سروس Webship کے شامل شدہ نجی سرٹیفکیٹ اتھارٹی استعمال کر سکتی ہے، اور ایک سائٹ جو پہلے سے PKI رکھتی ہے وہ آپریٹر مینیج کیے گئے سرٹیفکیٹ فائلیں رکھ سکتی ہے۔ وہ سب ایک Webship عمل کو شیئر کر سکتے ہیں بغیر کسی نجی کلید یا اعتماد کی حد کو شیئر کیے۔
چار خودکار سرٹیفکیٹ کے موڈز، ہر سائٹ کے مطابق منتخب کیے جاتے ہیں
certificate_mode فیلڈ ہر [[sites]] اندراج سے متعلق ہے۔ یہ ایک عالمی سوئچ نہیں ہے۔
| موڈ | ماخذ پر اعتماد | بہترین مطابق | تصدیقی راستہ | | --- | --- | --- | --- | | per_site | عوامی براؤزر اور آپریٹنگ سسٹم کے اعتماد کے اسٹورز | ایک عوامی سائٹ جس کا ایک ہی صحیح ہوسٹ نام ہو | عوامی ACME کے ساتھ TLS-ALPN-01 | | بیڑا | عوامی براؤزر اور آپریٹنگ سسٹم کے اعتماد کے اسٹورز | واضح طور پر رجسٹرڈ ڈومینز کے تحت تیسرے اور چوتھے سطح کے ناموں کے بڑے سیٹ | عوامی ACME کے ساتھ DNS-01 اور مستحکم سرٹیفکیٹ کے ٹکڑے | | ایمبیڈڈ | ایک نجی Webship روٹ جو آپریٹر نے انسٹال کیا ہے | داخلی خدمات، منظم شدہ ڈیوائسز، نجی فلیٹس، اور ٹیسٹ ماحول | عمل کے دوران اجرا؛ کوئی خارجی چیلنج نہیں | | شیئر کیا گیا | پبلک براؤزر اور آپریٹنگ سسٹم کے ٹرسٹ اسٹورز | پرانی تنصیبات جو جان بوجھ کر ایک پبلک ملٹی-SAN گروپ استعمال کرتی ہیں | پبلک ACME بمع TLS-ALPN-01 |
پیش فرض per_site ہے۔ یہ سائٹ کے عین نام کے لیے ایک پبلک سرٹیفکیٹ آرڈر کرتا ہے۔ فلیٹ موڈ کئی گہرے سب ڈومینز کے لیے قابل توسیع پبلک آپشن ہے۔ ایمبیڈڈ موڈ Webship کی پرائیویٹ ان-پراسس CA استعمال کرتا ہے۔ شیئرڈ موڈ مطابقت کے لیے دستیاب رہتا ہے، لیکن یہ پیش فرض نہیں ہے۔
[sites.tls] کے تحت مکمل سرٹیفیکیٹ اور کلید ہمیشہ اس سائٹ کے لیے خودکار اجراء پر فوقیت رکھتے ہیں۔
“Embedded ACME CA” کا کیا مطلب ہے
کنفیگریشن سیکشن کا نام [acme_ca] ہے، لیکن ایمبیڈڈ CA ایک عوامی یا نیٹ ورک تک قابل رسائی ACME سروس نہیں ہے۔ یہ کوئی ڈائریکٹری اینڈپوائنٹ ظاہر نہیں کرتا، کوئی ریموٹ اندراج قبول نہیں کرتا، کوئی رجسٹرار API کال نہیں کرتا، اور کوئی پروف-آف-کنٹرول چیلنج انجام نہیں دیتا۔
اس کے بجائے، Webship پورے نجی اجرا کے راستے کو ایک عمل میں رکھتا ہے:
- سائٹ certificate_mode = "embedded" کا انتخاب کرتی ہے۔
- Webship مرتب شدہ ریاست ڈائریکٹری میں نجی روٹ شناخت کو لوڈ یا تخلیق کرتا ہے۔
- Webship سائٹ کے لیے ایک نیا نجی کلید تیار کرتا ہے۔
- مُنسَخ شدہ روٹ اس مخصوص نام کے لیے ایک لیف سرٹیفیکیٹ دستخط کرتا ہے۔
- Webship زندگی کے TLS ریزولور میں انسٹال کرنے سے پہلے مکمل شناخت کی تصدیق کرتا ہے۔
- سرٹیفکیٹ پھر اس سائٹ کے لیے ہر فعال پروٹوکول کے لیے دستیاب ہوتا ہے۔
ایک ACME طرز کا نیٹ ورک چیلنج صرف Webship کو ہی خود پر ثابت کرے گا، اس لیے جڑا ہوا راستہ جان بوجھ کر کسی نیٹ ورک پروٹوکول کے بغیر ہے۔ [acme_ca] سیکشن نجی PKI کی حالت ہے: یہ بتاتا ہے کہ روٹ کہاں موجود ہے اور جاری شدہ لیف سرٹیفکیٹس کب تک درست رہیں گے۔
ایک سائٹ کے لیے ایمبیڈڈ سرٹیفکیٹ ترتیب دیں
یہ ایک نجی سائٹ کے لیے کم از کم شکل ہے:
~~~ٹومل سنیں = "0.0.0.0:443"
[ٹی ایل ایس] unknown_sni = "رد کرنا"
[خودکار_tls] فعال = درست cache_dir = "/var/lib/webship/acme"
[acme_ca] state_dir = "/var/lib/webship/acme-ca" leaf_validity_days = 90
[[مواقع]] ڈومین = "service.internal.example" root = "/srv/service" certificate_mode = "ایمبیڈڈ"
[سائٹس.پروٹوکولز] h1 = سچ h2 = سچ h3 = سچ ~~~
روٹ شناخت سستی طور پر تب بنتی ہے جب کسی ایمبیڈڈ سائٹ کو پہلی بار اس کی ضرورت ہو۔ Webship روٹ کلید کو state_dir میں محدود اجازتوں کے ساتھ محفوظ رکھتا ہے۔ روٹ سرٹیفکیٹ کی مدت دس سال ہے؛ لیف کی مدت leaf_validity_days سے کنٹرول ہوتی ہے۔
دونوں اسٹوریج مقامات کو پروڈکشن کی حالت کے طور پر سمجھیں:
- ایس ایم ای کی کیش خودکار طور پر منظم شدہ سائٹ شناختیں رکھتا ہے۔
- ایمبیڈڈ-سی اے ریاست کی ڈائریکٹری پرائیویٹ روٹ شناخت رکھتی ہے۔
- سروس اکاؤنٹ کو رسائی کی ضرورت ہے، لیکن ایپلیکیشن کے صارفین کو نہیں۔
- بیک اپ کو راز داری اور فائل کی اجازتیں برقرار رکھنی چاہئیں۔
- پیداوار، ترقی، اور جانچ کے لیے علیحدہ جڑیں اور علیحدہ ڈائریکٹریاں استعمال کرنی چاہئیں۔
روٹ ڈائریکٹری کو حذف کرنے سے "TLS ری سیٹ" نہیں ہوتا۔ یہ ایک نیا ٹرسٹ اینکر بناتا ہے۔ وہ کلائنٹس جو پرانے روٹ پر اعتماد کرتے ہیں، ریپلیسمنٹ کے ذریعہ جاری کردہ سرٹیفیکیٹس کو اس وقت تک مسترد کریں گے جب تک ان کے ٹرسٹ اسٹورز کو اپ ڈیٹ نہیں کیا گیا۔
نجی اعتماد ارادی ہے
ایمبیڈڈ CA سے حاصل شدہ سرٹیفیکیٹس خود بخود عوامی براؤزرز یا آپریٹنگ سسٹمز پر معتبر نہیں سمجھے جاتے۔ یہ تب ہی معتبر سمجھے جاتے ہیں جب آپریٹر کلائنٹ کے ٹرسٹ اسٹور میں برآمد شدہ Webship روٹ سرٹیفیکیٹ انسٹال کرے۔
یہ ایمبیڈڈ موڈ کو کے لیے موزوں بناتا ہے:
- کمپنی کے زیرانتظام لیپ ٹاپ اور فون جو ڈیوائس مینجمنٹ کے ذریعے رجسٹر کیے گئے ہیں؛
- اندرونی سروس سے سروس تک ٹریفک کے لیے ایک واضح CA بنڈل؛
- نجی آلات اور کنٹرول شدہ ایج فلیٹس؛
- ترقی اور ٹیسٹ کے ماحول جو حقیقی TLS کے رویے کا مظاہرہ کرنا لازمی ہیں؛
- منقطع شدہ نیٹ ورک جو کسی عام پبلک CA پر انحصار نہیں کر سکتے۔
یہ ایک عام عوامی ویب سائٹ کے لیے درست طریقہ نہیں ہے جس کے زائرین غیر منظم براؤزر استعمال کرتے ہیں۔ صحیح عوامی نام کے لیے عوامی فی سائٹ اجرا کا استعمال کریں، بڑے عوامی سب ڈومین سیٹ کے لیے فلیٹ اجرا، صرف جان بوجھ کر لگائی گئی قدیم ملٹی-SAN ڈیپلائمنٹ کے لیے شیئرڈ، یا پہلے سے معتبر PKI سے دستی فائلیں استعمال کریں۔
صرف کلائنٹس کو روٹ سرٹیفکیٹ تقسیم کریں۔ کبھی بھی روٹ پرائیویٹ کی کو تقسیم نہ کریں۔ اس کی ملکیت رکھنے والے کو وہ اختیار حاصل ہوتا ہے کہ وہ ہر رجسٹر شدہ کلائنٹ کے لیے قابل اعتماد شناختیں جاری کر سکے۔
عوامی اور نجی سرٹیفکیٹس ساتھ ساتھ موجود ہو سکتے ہیں
Webship 1.4.0 ایک ہی سننے والے پر مختلف سرٹیفیکیٹ حکمت عملیوں کو ملا سکتا ہے:
~~~ٹومل سنیں = "0.0.0.0:443"
[ٹی ایل ایس] unknown_sni = "رد کرنا"
[خودکار_tls] فعال = درست directory_url = "https://acme-v02.api.letsencrypt.org/directory" cache_dir = "/var/lib/webship/acme" contacts = ["mailto:ops@example.com"] accept_terms_of_service = سچ
[acme_ca] state_dir = "/var/lib/webship/acme-ca" leaf_validity_days = 90
[[مواقع]] ڈومین = "www.example.com" root = "/srv/public" certificate_mode = "per_site"
[[مواقع]] ڈومین = "control.internal.example" root = "/srv/control" certificate_mode = "ایمبیڈڈ"
[[مواقع]] ڈومین = "payments.example.com" root = "/srv/payments"
[سائٹس.tls] cert = "/etc/webship/payments-fullchain.pem" کلید = "/etc/webship/payments-private-key.pem" ~~~
یہاں، www.example.com اپنا عوامی ACME سرٹیفکیٹ حاصل کرتا ہے۔ control.internal.example ایمبیڈڈ CA سے ایک نجی سرٹیفکیٹ حاصل کرتا ہے۔ payments.example.com آپریٹر کی بیرونی PKI کے تحت رہتا ہے کیونکہ اس کی واضح فائلیں فوقیت رکھتی ہیں۔
عوامی ACME ڈائریکٹری کو ایمبیڈڈ سائٹس نظرانداز کر دیتی ہیں۔ ایمبیڈڈ روٹ کبھی بھی عوامی سائٹ پر دستخط نہیں کرتا۔ دستی سائٹ کبھی بھی بغیر اطلاع کے کسی بھی خودکار ورک فلو میں شامل نہیں کی جاتی۔
H1، H2، H3، اور WebTransport کے لیے ایک سرٹیفکیٹ ریزولوور
سرٹیفکیٹ کا انتخاب TLS ہینڈشیک کے دوران ہوتا ہے، اس سے پہلے کہ کوئی HTTP درخواست موجود ہو۔ Webship سائٹ کی شناخت منتخب کرنے کے لیے ClientHello سرور نام استعمال کرتا ہے اور پھر ایپلیکیشن پروٹوکول پر بات چیت کرتا ہے۔
- HTTP/1.1 اور HTTP/2 TCP پر TLS استعمال کرتے ہیں۔
- HTTP/3 اور WebTransport UDP پر QUIC کے اندر TLS استعمال کرتے ہیں۔
- ایک درست سائٹ کی شناخت ہر فعال پروٹوکول کے لیے کام کر سکتی ہے۔
- HTTP/3 کو بھی UDP رسائی کی ضرورت ہے؛ H1 اور H2 TCP راستہ استعمال کرتے ہیں۔
- Alt-Svc H3 کا اشتہار دے سکتا ہے جبکہ TCP کے فیل بیک کو محفوظ رکھتا ہے۔
TCP، TLS اور QUIC ایک ہی سائٹ سے متعلق شناخت کے ماڈل کا استعمال کرتے ہیں۔ بالکل درست ناموں کو ترجیح دی جاتی ہے، جہاں وائلڈ کارڈ سرٹیفیکیٹس مرتب کیے گئے ہوں وہاں سب سے لمبا درست وائلڈ کارڈ غالب آتا ہے، اور نامعلوم نامی SNI کو ایک غیر متعلقہ ڈیفالٹ سرٹیفیکیٹ حاصل کرنے کی بجائے مسترد کیا جا سکتا ہے۔
جب کسی غیر شناسا ہوسٹ نام پر بند ہونا ضروری ہو تو ملٹی-سائٹ لسٹنر پر unknown_sni = "reject" استعمال کریں۔ پیداوار میں رول آؤٹ سے پہلے تسلیم شدہ نام، غیر تسلیم شدہ نام، اور آپ کے متوقع no-SNI رویے کا ٹیسٹ کریں۔
مربوط شناختوں کو بغیر خدمت کے وقفے کے گھمائیں
Webship اپنے مستند، لوپ بیک سے منسلک MCP سرور کے ذریعے سرٹیفکیٹ کی حالت اور کنٹرول شدہ تبدیلیوں کو ظاہر کرتا ہے:
- webship.tls.get_status فعال سرٹیفکیٹ حل کنندہ اور تجدید کی حالت رپورٹ کرتا ہے۔
- webship.tls.reissue_certificate فوراً ایک خودکار طور پر منظم شدہ سائٹ کا سرٹیفکیٹ دوبارہ جاری کرتا ہے صرف اس وقت جب وہ سائٹ ایمبیڈڈ موڈ استعمال کرتی ہو۔
- webship.tls.reload عام محفوظ TLS راستے کے ذریعے سرٹیفیکیٹ کی حالت کو دوبارہ لوڈ کرتا ہے۔
- webship.acme_ca.status یہ رپورٹ کرتا ہے کہ پرائیویٹ CA منتخب ہے یا نہیں، اس کی اسٹیٹ ڈائریکٹری، لیف کی مدت، اجراء کی تعداد، منسوخی کی تعداد، اور حالیہ ڈومین کا نمونہ۔
- webship.sites.apply کسی پن کی گئی کنفیگریشن ورژن کے خلاف سائٹس کو شامل یا حذف کرتا ہے۔
ایک ایمبیڈڈ ری ایشو کے لیے، Webship تبدیلی سے پہلے متبادل بناتا اور تصدیق کرتا ہے۔ موجودہ درست شناخت نئے شناخت تیار ہونے تک خدمات فراہم کرتی رہتی ہے۔ ریٹائرڈ شناخت صرف اس وقت ریکارڈ کی جاتی ہے جب متبادل انسٹال کر دیا جائے۔
فوری دوبارہ اجرا کی کارروائی جان بوجھ کر عوامی per_site سرٹیفکیٹس کو مسترد کر دیتی ہے۔ عوامی تجدید کو عوامی ACME لائف سائیکل کے اندر رہنا چاہیے نہ کہ نجی زیر عمل دستخط کے ساتھ الجھا دیا جائے۔ مشترکہ موڈ کی ممبرشپ بھی دوبارہ شروع ہونے سے منجمد ہے کیونکہ ایک کثیر-SAN گروپ کو تبدیل کرنا شناخت کی حد کو دوبارہ تعمیر کر دیتا ہے۔
MCP ایک مراعات یافتہ کنٹرول سطح ہے۔ اسے لوپ بیک پر رکھیں، TLS اور ایک مضبوط بیرر ٹوکن کی ضرورت رکھیں، دور دراز انتظام کے لیے ایک تصدیق شدہ ٹنل استعمال کریں، اور ہر تبدیلی کا آڈٹ کریں۔
ناکامی کی حدود جو اہم ہیں
ایک محفوظ سرٹیفکیٹ کا نظام صحیح سمت میں ناکام ہونا چاہیے۔
- ایک نئے ترتیب شدہ مربوط سائٹ کو کسی اور سائٹ کی شناخت موصول نہیں ہوتی جب تک کہ اجرا زیر التوا ہو۔
- ایک غیر درست متبادل کام کرنے والے سرٹیفکیٹ پر نصب نہیں کیا جاتا۔
- واضح دستی فائلیں اس سائٹ کی خودکار ملکیت کو روکتی ہیں۔
- نامعلوم SNI کو HTTP روٹنگ سے پہلے مسترد کیا جا سکتا ہے۔
- موجودہ ایمبیڈڈ CA نجی رہتی ہے اور اس کا کوئی ریموٹ انرولمنٹ اینڈپوائنٹ نہیں ہے۔
- عوامی اور مربوط شناختیں خودکار-TLS کے اسٹیٹ کے اندر الگ کیش راستے استعمال کرتی ہیں۔
ایک انتباہ کہ ایمبیڈڈ CA شروع نہیں ہوئی ہے اس کا مطلب ہے کہ Webship نے مرتب شدہ اسٹیٹ ڈائریکٹری کو فعال نہیں کیا۔ متعلقہ سائٹ پر ٹریفک بھیجنے سے پہلے ملکیت، اجازتیں، مستقل مزاجی، یا اسٹوریج کی دستیابی کو درست کریں۔ اس خامی کو کسی دوسرے ماحول کی روٹ کلید کو کاپی کر کے حل نہ کریں۔
پیداوار چیک لسٹ
ایمبیڈڈ موڈ کو فعال کرنے سے پہلے:
- ہر کلائنٹ آبادی کی شناخت کریں جسے سائٹ پر اعتماد کرنا ضروری ہے۔
- روٹ سرٹیفکیٹ کو برآمد اور انسٹال کرنے کے لیے ایک کنٹرول شدہ عمل بنائیں۔
- پیداوار، ترقی، اور جانچ کے لیے الگ بنیادی حالت استعمال کریں۔
- مضبوطی سے برقرار رکھیں اور ایمبیڈڈ-CA اسٹیٹ ڈائریکٹری اور خودکار-TLS کیشے کی حفاظت کریں۔
- صرف مطلوبہ کلیدی مواد تک رسائی کے ساتھ ایک مخصوص سروس اکاؤنٹ کے تحت Webship چلائیں۔
- ہر سائٹ پر certificate_mode منتخب کریں جس کی اعتماد کی حد واضح ہونی چاہیے۔
- نامعلوم-SNI پالیسی کو سیٹ اور ٹیسٹ کریں۔
- H1، H2، اور H3 کو جان بوجھ کر فعال کریں اور TCP اور UDP دونوں راستوں کی توثیق کریں۔
- پیداوار کے باہر دوبارہ اجرا، دوبارہ شروع، بیک اپ، بحالی، اور کلائنٹ ٹرسٹ کی تصدیق کی مشق کریں۔
- رول آؤٹ سے پہلے webship --check-config چلائیں، پھر ایک حقیقی کلائنٹ سے جاری کنندہ، نام، درستگی، چین، اور طے شدہ پروٹوکولز کی تصدیق کریں۔
پہلے اعتماد کا انتخاب کریں، پھر خودکار نظام کا
ایمبیڈڈ سی اے نجی انفراسٹرکچر کے لیے بیرونی سرٹیفکیٹ سروس کی انحصار کو ختم کر دیتا ہے۔ یہ پرائیویٹ روٹ کو عالمی سطح پر قابل اعتماد نہیں بناتا، اور یہ آپریٹر کی پی کے آئی ذمہ داریوں کو ختم نہیں کرتا۔
Webship کلیدی تخلیق، دستخط، توثیق، تنصیب، گردش، اور پروٹوکول بھر میں سرٹیفکیٹ کے انتخاب کو خودکار بناتا ہے۔ آپریٹر اب بھی روٹ کے قبضے، کلائنٹ کی اندراج، ماحول کی علیحدگی، بیک اپ، بازیابی، اور عوامی یا نجی اعتماد کے راستے کے استعمال کے فیصلے کا مالک رہتا ہے۔
وہ علیحدگی خصوصیت ہے۔ ایک خود مختار سرور نجی TLS کو خودکار طور پر انجام دے سکتا ہے بغیر یہ ظاہر کیے کہ وہ ایک عوامی CA ہے—اور عوامی سائٹس پھر بھی اسی عمل میں براؤزر سے قابل اعتماد فی سائٹ یا فلیٹ اجراء استعمال کر سکتی ہیں۔
رول آؤٹ سے پہلے ورژن شدہ Webship 1.4.0 دستاویزات پڑھیں۔ RFC 5280 سند کے پروفائل اور تصدیق کی تعریف کرتا ہے، RFC 6066 TLS سرور-نام سگنلنگ کی تعریف کرتا ہے، RFC 8446 TLS 1.3 کی تعریف کرتا ہے، RFC 8555 عوامی ACME کی تعریف کرتا ہے، اور RFC 9525 سروس کی شناخت کی تصدیق کی تعریف کرتا ہے۔