خروجی گرفتن گواهیها از P12 بدون کلید خصوصی
یک بستهٔ PKCS12 کلیدها و گواهیها را با هم نگه میدارد. ابتدا ساختار را بخوانید، سپس گواهیها را با -nokeys انتخاب کنید نه با حذف محافظت.
بلیت پشتیبانی میپرسد کدام گواهی داخل بستهٔ VPN است، و اولین واکنش این است که همه چیز را خروجی بگیریم و پیوست کنیم. پروندهٔ P12 گواهیها و مواد کلید خصوصی را در یک محفظه بستهبندی میکند، پس خروجی گرفتن از همه چیز دقیقاً همان چیزی است که نباید بفرستید. فرمانی که به پرسش پاسخ میدهد یک مسئلهٔ انتخاب است، نه مسئلهٔ تبدیل. چهار پرچم تعیین میکند کدام نیمهٔ محفظه را میگیرید، و دو تای آنها امنتر از آنچه هستند به نظر میرسند.
با خواندن محفظه شروع کنید، نه با خالی کردن آن.
پروندهٔ PKCS12 در واقع چه چیزی حمل میکند
یک محفظهٔ PKCS12 یک یا چند گواهی، شاید یک کلید خصوصی، و یک message authentication code روی محتویات را نگه میدارد. گواهیها ممکن است گواهی برگ هویت مشتری شما و گواهیهای میانی که آن را به یک CA زنجیر میکنند شامل شوند. کلید، وقتی وجود دارد، همان چیزی است که پرونده را راز میکند نه سند.
این تفاوت دلیل وجود -nokeys و دلیل آن است که این پرچم همان چیزی است که این کار نیاز دارد.
بسته را بدون نوشتن کلید بخوانید
شکل بازرسی ساختار و جزئیات الگوریتمها را چاپ میکند و چیزی نمینویسد: openssl pkcs12 -in client.p12 -info -noout. رمز ورود را میپرسد، که جای درست برای آن مقدار است، و میگوید پرونده اصلاً کلید دارد یا نه. وقتی رمز را نمیتوان تایپ کرد از -passin env:PKCS12_PASS استفاده کنید، چون رمز داخل یک فرمان shell رمزی در فهرست فرایندهاست. این مرحله چیزی خروجی نمیگیرد، و تمام نکته همین است.
خروجی را برای سه چیز بخوانید: چند گواهی، آیا کلیدی هست، و کدام الگوریتمها از آن محافظت میکنند.
از -nokeys استفاده کنید و آن را با -nocerts اشتباه نگیرید
-nokeys کلیدهای خصوصی را کنار میگذارد و گواهیها را باقی میگذارد. -clcerts آن را به گواهیهای مشتری محدود میکند، -cacerts آن را به گواهیهای CA محدود میکند، و این دو صافی هستند نه جایگزین. -nocerts مثل نوشتار امن همان ایده خوانده میشود و معنای مخالف دارد: بدون گواهی، که فقط کلیدها را باقی میگذارد. آمیختن آن در خروجی گواهیها همان راهی است که کلید خصوصی روی دیسک میافتد.
شکل دو خطی که یک پروندهٔ گواهی و یک پروندهٔ CA و هیچ چیز دیگری تولید میکند این است:
openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pemبستههای قدیمی برای خواندن رمزنگاری قدیمیترشان به -legacy روی OpenSSL 3 نیاز دارند، و این پرچم آنچه تجزیهگر میپذیرد را عوض میکند نه آنچه منتشر میکند. اگر تجزیه با خطای الگوریتم پشتیبانینشده شکست بخورد، افزودن -legacy نخستین گام درست است و پرش از بررسی MAC نیست.
خروجی را بررسی کنید، نه کد خروج
وضعیت خروج صفر میگوید فرمان اجرا شد، نه اینکه پرونده آنچه انتظار دارید را دارد. گواهیها را در خروجی بشمارید و subject و تاریخها را بخوانید: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint. اثر انگشت را با آنچه تیم پشتیبانی انتظار دارد مقایسه کنید، چون بستهای با دو گواهی مشتری پروندهای با دو بلوک تولید میکند و بیشتر ابزارها فقط اولی را میخوانند. هدف، اعتماد و تطابق کلید دوباره آزمونهای جداگانهاند.
گواهیای که تجزیه میشود گواهیای است که تجزیه میشود. اما گواهیای نیست که VPN میپذیرد.
تصمیم بگیرید اصلاً به پرونده نیاز دارید یا نه
اگر مشتری گیرنده PKCS12 را مستقیم وارد کند، فرستادن بستهٔ اصلی از مسیری تأییدشده با نگه داشتن رمز بهصورت جدا سادهتر است و محافظت را حفظ میکند. استخراج برای بازرسی، برای مشتریای که PEM میخواهد، یا برای مورد پشتیبانیای است که یک مصنوع مشخص خواسته است. هر استخراج یک لایه را برمیدارد و باید دلیلی داشته باشد.
گواهیهای عمومی کلید خصوصی را ندارند، اما نامها و جزئیات سازمان را دارند. فیلدهایی را که بلیت خواسته به اشتراک بگذارید نه پرونده را، مگر اینکه خود پرونده خواسته شده باشد.