دروازهٔ شما گواهی کارفرمایی را می‌پذیرد که هرگز آن را ندیده است، زیرا آنچه با آن پیکربندی شده یک صادرکنندهٔ مورد اعتماد است و گواهی در هنگام دست‌دهی می‌رسد. پروتکل قرار است این‌گونه کار کند و دقیقاً به همین دلیل فهرست پوشه روی سرور سیاههٔ ضعیفی است. صادرکننده می‌داند چه ساخته است، سرور می‌داند چه چیزی متصل شده و وضعیت ابطال می‌داند چه چیزی پس گرفته شده است. سیاهه‌ای که این سه سند را در هم می‌آمیزد، در نهایت چیزی را ادعا می‌کند که هیچ‌یک از آن‌ها نگفته است.

دروازه به صادرکننده اعتماد می‌کند، نه به فهرست فایل‌ها

اعتبارسنجی گواهی ارائه‌شده را با لنگر اعتماد مقایسه می‌کند، بنابراین هویتی که دیروز همان صادرکننده ساخته است، بدون آنکه هرگز روی دیسک سرور وجود داشته باشد، متصل می‌شود. برای این اتفاق چیزی نیاز به رونوشت ندارد و هیچ‌کس نباید آن را دستی تأیید کند. پس سندهای خود سرور توصیف‌کنندهٔ ورودها هستند، نه جمعیت هویت‌هایی که می‌توانند وارد شوند.

شکاف معکوس به همان اندازه ناخوشایند است. یک پوشه می‌تواند گواهی‌های منقضی، ابطال‌شده و هویت‌هایی را در خود داشته باشد که برای دستگاه‌هایی صادر شده‌اند که هرگز مستقر نشدند. شمردن فایل‌ها به این پاسخ می‌دهد که چند فایل وجود دارد، که پرسشی است که هیچ‌کس نپرسیده است. به‌جای آن از سندهایی شروع کنید که معنا دارند.

چهار پرسش، چهار سند متفاوت

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

Question you are answeringWhere the answer livesHow quickly it changesWhat it will never show
Was this identity ever created?The issuer's issuance databaseOnly when something is issuedWhether the device still exists
Is a copy sitting on this host?The paths you actually inspectedWhenever anyone copies filesCertificates that were never copied here
Has the issuer withdrawn it?Published revocation stateWhen the issuer next publishesWithdrawals that are not published yet
Is it connected right now?The live session tableContinuouslyAnything about past or future sessions

بایگانی گواهی‌های عمومی راز نیست، چون هیچ کلید خصوصی در آن نیست، اما قابل اشتراک هم نیست. نام‌های موضوع و نام دستگاه‌ها جزئیات عملیاتی را آشکار می‌کنند و گزارش باید نزد مخاطبی بماند که به آن نیاز دارد. کلیدهای خصوصی کاملاً بیرون از سیاهه می‌مانند، زیرا سیاهه به فراداده نیاز دارد، نه به اعتبارنامه.

صادرکننده به‌همراه شمارهٔ سری، تنها کلید پایدار است

موضوع‌ها بازیافت می‌شوند و نام فایل‌ها دوباره به کار می‌روند، بنابراین نامی که سال گذشته یک دستگاه را مشخص می‌کرد، اکنون می‌تواند دستگاه دیگری را مشخص کند. هیچ‌یک کلید نیست و گزارشی که بر پایهٔ هر یک از آن‌ها ساخته شود، در نهایت دو هویت را در یک خط ادغام می‌کند.

جفت صادرکننده و شمارهٔ سری یک گواهی را به‌طور یکتا مشخص می‌کند و هر دو فیلد از خود گواهی می‌آیند. آن‌ها را همراه با موضوع، تاریخ‌های اعتبار، منبعی که رونوشت از آن آمده و شخص یا دستگاه مسئول ثبت کنید. وضعیت ابطال و استقرار را به‌صورت فیلدهای جداگانه با زمان‌های مشاهدهٔ خودشان بیفزایید، زیرا گواهی درون پنجرهٔ اعتبارش به‌طور خودکار مجاز نیست. این دو واقعیت در سامانه‌های متفاوتی زندگی می‌کنند و یکی کردن آن‌ها حالتی را پنهان می‌کند که در آن هویتی پس گرفته شده در حالی که فایلش هنوز به‌روز به نظر می‌رسد.

هر بار یک گواهی را بخوانید

نویسهٔ عام که در یک پوشه گسترش می‌یابد رابط دسته‌ای نیست و پنهان می‌کند که کدام فایل کدام خروجی را تولید کرده است. فراداده را برای هر گواهی بخوانید و سمت ابطال را از مصنوع خودش بخوانید. مرجع OpenSSL x509 فیلدهایی را که این گزینه‌ها چاپ می‌کنند فهرست می‌کند.

openssl x509 -in <cert>.pem -noout -issuer -serial -subject -dates -fingerprint -sha256
openssl crl -in <issuer>.crl -noout -text | head -n 40

برای یک PKI مدیریت‌شدهٔ Easy-RSA، پایگاه دادهٔ صدور را از طریق گردش کاری که ابزار پشتیبانی می‌کند جویا شوید به‌جای آنکه چیدمان پوشه را فرض کنید، و اصل‌ها را در حین گردآوری سیاهه فقط‌خواندنی نگه دارید. قالب دفتر به‌قدر کافی منظم است که بتوان بدون باز کردن دستی پایگاه داده، ورودی‌های معتبر را شمرد و پس‌گرفته‌ها را فهرست کرد.

grep -c '^V' pki/index.txt
grep '^R' pki/index.txt | cut -f4,5

سیاهه‌ای که از صدور بعدی جان سالم به در می‌برد

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

نتیجه را برای تصمیم‌های تمدید و بازنشستگی به کار ببرید، نه به‌عنوان تمرینی روی صفحه‌گسترده. حذف یک رونوشت محلی رونوشت‌های راه دوری را که از قبل وجود دارند باطل نمی‌کند. هویت را از طریق گردش کار ابطال و مجوزسازی پیکربندی‌شده پس بگیرید، سپس پس‌گیری را با تاریخش ثبت کنید. هویتی که از سرور ناپدید شده اما صادرکننده هنوز به آن اعتماد دارد بازنشسته نشده است، و همین تفاوت سیاههٔ دقیق را از سیاهه‌ای که فقط آرامش‌بخش است جدا می‌کند.

مقالات مرتبط