Sertifikat muhokamalarida ikki da’vo aylanib yuradi. Birinchisi — .p12 kuchli variant, .pem esa bo’sh; ikkinchisi — matn faylini o’qiy olasiz, shuning uchun uni yuborish xavfsiz bo’lishi kerak. Ikkalasi ham bir daqiqalik tekshiruvga dosh bermaydi.

PKCS12, PEM va DER sertifikat obyektlari qanday qadoqlanishi va kodlanishini tasvirlaydi. Ular qarshi tomon kimligini, chiqaruvchiga ishonilishini yoki faylga parol kerakligini hal qilmaydi.

Mijoz nimani qabul qilishi — moslik masalasi. Faylda nima borligi — identifikatsiya masalasi. Bu ikkalasini ajratib turing, va import xatolarining ko’pchiligi sirli bo’lib qolmaydi.

Uch konteyner, bitta obyekt modeli

Aslida qo’lingizda bor narsadan boshlang. Sertifikat — ochiq kalit haqidagi imzolangan bayonot. Maxfiy kalit — bu kalitni siz boshqarishingizni isbotlaydigan alohida material. Zanjir — sertifikatingizni mijoz ishonadigan ildizga bog’laydigan chiqaruvchilar to’plami. Uchalasi ham qadoqlashdan qat’i nazar mavjud.

PKCS12 fayli, odatda .p12 yoki .pfx, RFC 7292da belgilangan konteyner bo’lib, maxfiy kalitni, bir yoki bir nechta sertifikatni va zanjirni bitta parol bilan himoyalangan blobda, identifikatsiyani nomlovchi taxallus bilan olib yurishi mumkin. PEM fayli RFC 7468da belgilangan matnli ramka: BEGIN va END qatorlari orasidagi base64 tana, va bitta fayl ketma-ket bir nechta blok saqlashi mumkin. DER — o’sha ASN.1 tuzilmalarining ikkilik kodlanishi, PEM tanasi esa tom ma’noda base64 bilan o’ralgan DER.

Oxirgi gap esda qolishga arziydi. PEMni DERga aylantirish o’ramni qayta yozadi, mazmunni emas, va qaytarish asl baytlarni qaytaradi.

ContainerCan holdDoes not decide
PKCS12 (.p12, .pfx)Key, leaf certificate, chain, alias, passwordWhich root the client trusts
PEM (.pem, .crt, .cer)Any number of base64 blocksWhether the private key is present
DER (.der, .cer)One binary structureThe object type, whatever the extension says

Kodlash shifrlash emas

Base64 — transport alifbosi. U hech narsani yashirmaydi, va har kim shellda PEM blokini dekodlashi mumkin. DER fayli ikkilik va xuddi shunday ommaviy. Bu ikki xususiyat himoya emas, va ikkalasi ham parol borligini bildirmaydi.

Haqiqiy himoya kalit materialida yashaydi. PKCS12 paketi mazmunini paroldan olingan kalit ostida shifrlashi mumkin. PEM maxfiy kaliti eski sarlavha bloki bilan shifrlanishi yoki PKCS#8 EncryptedPrivateKeyInfo ichida saqlanishi mumkin. Sertifikat o’zi hech qanday sir saqlamaydi, shuning uchun faqat sertifikat chiqargan eksport, qaysi formatda o’rasangiz ham, mijozni autentifikatsiya qila olmaydigan holatda qoldiradi.

Kengaytma — ishora, shartnoma emas. .cer va .crt bilan tugaydigan fayllar ikkala kodlashda ham uchraydi, va qurilmalar DER sertifikatlarini .pem nomlari ostida shunchalik tez-tez eksport qiladiki, suffiksdan taxmin qilish butun bir tushdan keyinni yo’qotadi. Buning o’rniga birinchi baytlarni o’qing: PEM fayli BEGIN qatori bilan ochiladi, DER esa 0x30 bilan boshlanadi, chunki tashqi tuzilma SEQUENCE.

Import aslida nima uchun muvaffaqiyatsiz bo’ladi

Mijoz xato xabarlari bir nechta turli muammoni yaroqsiz sertifikat haqidagi bitta gapga siqib qo’yadi, shuning uchun ularni sabab bo’yicha ajrating. Eng keng tarqalgani — kodlash nomuvofiqligi: PEMni tahlil qiladigan mijoz DER faylida tahlil xatosini qaytaradi, va yechim yangi sertifikat emas, balki konvertatsiya. Ikkinchisi — yo’q kalit, bunda sertifikat yaxshi, ammo identifikatsiyani isbotlab bo’lmaydi. Uchinchisi — zanjir, bunda oraliq sertifikatsiz paket import oynasida to’g’ri ko’rinadi va handshake paytida muvaffaqiyatsiz bo’ladi.

Shifrlash parametrlari to’rtinchisini keltirib chiqaradi, va u aynan noto’g’ri parolga o’xshaydi. Eski qurilmalar PKCS12 fayllarini RC2-40 va 3DES bilan eksport qilgan, OpenSSL 3 ularni eski provayder yuklanmasa rad etadi. Qurilmadan AES-256-CBC va PBKDF2 bilan qayta eksport qilish — bardoshli yechim. Bitta fayl uchun mijoz mashinasida eski shifrlarni doimiy yoqib qo’yish — yomon almashuv.

Beshinchisi — noaniqlik. Ikki kalit va ikki sertifikat saqlovchi konteyner yoki uchta CERTIFICATE blokli PEM fayl mijozni tanlashga majbur qiladi, va uning tanlovi ko’pincha shunchaki birinchi element. Tunnel noto’g’ri identifikatsiya bilan ko’tarilsa, odatda sabab shu.

Konvertatsiyadan oldin ko’zdan kechiring

Tuzilmani sirlarni chop etmasdan o’qing. openssl pkcs12 -in bundle.p12 -info -noout kalit va sertifikat chiqishini bostirib, shifrlash algoritmlari va taxalluslarni xabar qiladi, va openssl-pkcs12 qo’llanmasi bayroqlarni hujjatlashtiradi. -nooutni olib tashlash va -nodes qo’shish saqlashni mo’ljallagan fayllar uchun, tez qarash uchun emas, chunki u maxfiy kalitni ochiq yozadi.

Sertifikat uchun openssl x509 -in cert.pem -noout -subject -issuer -dates import oynasi javob bermaydigan savolga javob beradi, va -ext subjectAltName qo’shish sertifikat aslida qaysi nomlar uchun amal qilishini ko’rsatadi. Agar fayl DER bo’lsa, -inform DER qo’shing; shu bitta bayroq yuklanmayotgan xatolarning ko’pini hal qiladi.

Kalitni sertifikat bilan moslashtirish mexanik ish, va har qanday importdan oldin qilishga arziydi:

openssl x509 -in cert.pem -noout -pubkey | openssl sha256
openssl pkey -in key.pem -pubout | openssl sha256

Bir xil dayjestlar bu juftlik bir-biriga tegishli ekanini bildiradi. Turli dayjestlar sizda noto’g’ri kalit borligini bildiradi, va format konvertatsiyasining hech qanday miqdori buni o’zgartirmaydi.

Format hech qachon o’zgartirmaydigan narsa

Ishonch qarorlari konteynerdan yuqorida qabul qilinadi. Mijoz zanjirni o’z omboridagi ildizgacha bosib o’tadi, amal qilish oynasini tekshiradi, mijoz autentifikatsiyasi uchun kengaytirilgan kalit foydalanishini tekshiradi, va server tomonida u bog’langan nom sertifikatda borligini tekshiradi. Bu qadamlarning hech biri fayl kengaytmasini o’qimaydi.

Shu sababli faylni xato yo’qolguncha qayta nomlash vaqtni yo’qotishning bunchalik ishonchli usuli. Import muvaffaqiyatli bo’ladi, identifikatsiya hanuz noto’g’ri, va nosozlik handshake paytida qaytadan paydo bo’ladi, u yerda xabar kamroq yordam beradi. Ikki yil oldin eksport qilingan paketning toza import bo’lib, baribir rad etilishining sababi ham shu: amal qilish muddati fayl nomida emas, sertifikat ichida sayohat qilgan.

Qayta ishdan qochadigan tartib

Mijoz hujjatlaridan qaysi kodlashlarni qabul qilishini va mijoz identifikatsiyasi uchun qaysi konteynerni kutishini so’rang, so’ng sizga nima berilganini ko’ring. Agar mijoz bitta import qilinadigan identifikatsiya xohlasa va sizda alohida PEM fayllar bo’lsa, paketni o’zingiz boshqaradigan parol bilan bir marta yig’ing va manbalarni saqlang. Agar unga PEM kerak bo’lsa, kalit va zanjirni ajratib oling, so’ng oraliq fayllarni jamoangiz allaqachon ishlatadigan hisob ma’lumotlarini boshqarish jarayoni orqali olib tashlang.

Importdan keyin oynani emas, identifikatsiyani tekshiring: subyekt, chiqaruvchi, amal qilish muddati, va mijoz taqdim etadigan nom. Ro’yxatdagi do’stona nom — yorliq, tasdiqlangan identifikatsiya emas. Agar tunnel shundan keyin ishlamasa, siz qadoqlashni emas, autentifikatsiya yoki marshrutlashni tuzatyapsiz, va bu ancha qisqa suhbat.

O'xshash maqolalar