PKCS12, PEM au DER: mteja wa VPN anahitaji nini kwa kweli
Ufungashaji huamua kama mteja wako ataingiza utambulisho, si kama unaaminika. Linganisha PKCS12, PEM na DER, kisha thibitisha.
Madai mawili huzunguka katika mijadala ya vyeti. La kwanza ni kwamba .p12 ndiyo chaguo thabiti na .pem ni dhaifu; la pili ni kwamba faili ya maandishi lazima iwe salama kutumwa kwa sababu unaweza kuisoma. Hakuna lolote kati ya hayo linalostahimili dakika moja ya uchunguzi.
PKCS12, PEM na DER hufafanua jinsi vitu vya vyeti vinavyofungwa na kusimbwa. Haziamui nani ni mwenza, kama mtoaji anaaminika, au kama faili inahitaji nenosiri.
Kile ambacho mteja hukubali ni swali la upatanifu. Kile ambacho faili inayo ni swali la utambulisho. Tenganisha mambo hayo mawili na makosa mengi ya uingizaji yataacha kuwa ya kutatanisha.
Vyombo vitatu, mtindo mmoja wa vitu
Anza na kile ulicho nacho kwa kweli. Cheti ni tamko lililotiwa sahihi kuhusu ufunguo wa umma. Ufunguo wa faragha ni nyenzo tofauti inayothibitisha kwamba unadhibiti ufunguo huo. Mnyororo ni seti ya watoaji wanaounganisha cheti chako na mzizi ambao mteja anauamini. Vyote vitatu vipo bila kujali ufungashaji.
Faili ya PKCS12, kwa kawaida .p12 au .pfx, ni chombo kilichofafanuliwa katika RFC 7292 ambacho kinaweza kubeba ufunguo wa faragha, cheti kimoja au zaidi na mnyororo katika kitu kimoja kilicholindwa kwa nenosiri, pamoja na jina la utambulisho. Faili ya PEM ni muundo wa maandishi uliofafanuliwa katika RFC 7468: mwili wa base64 kati ya mistari ya BEGIN na END, na faili moja inaweza kubeba vizuizi kadhaa mfululizo. DER ni usimbaji wa binary wa miundo hiyo hiyo ya ASN.1, na mwili wa PEM kwa hakika ni DER iliyofungwa na base64.
Sentensi hiyo ya mwisho ndiyo inayofaa kuikumbuka. Kubadilisha PEM kuwa DER huandika upya ufungaji, si maudhui, na kubadilisha kurudi hurejesha baiti za awali.
| Container | Can hold | Does not decide |
|---|---|---|
| PKCS12 (.p12, .pfx) | Key, leaf certificate, chain, alias, password | Which root the client trusts |
| PEM (.pem, .crt, .cer) | Any number of base64 blocks | Whether the private key is present |
| DER (.der, .cer) | One binary structure | The object type, whatever the extension says |
Usimbaji si usimbaji fiche
Base64 ni alfabeti ya usafirishaji. Haifichi chochote, na mtu yeyote anaweza kufungua kizuizi cha PEM kwenye shell. Faili ya DER ni binary na ni ya umma vile vile. Sifa hizo hazilindi, na wala hazidokezi kwamba nenosiri lipo.
Ulinzi wa kweli upo katika nyenzo za ufunguo. Kifurushi cha PKCS12 kinaweza kusimba maudhui yake kwa ufunguo unaotokana na nenosiri. Ufunguo wa faragha wa PEM unaweza kusimbwa kwa kizuizi cha kichwa cha zamani au kuwekwa ndani ya PKCS#8 EncryptedPrivateKeyInfo. Cheti peke yake hakina kitu cha siri, ndiyo sababu export iliyozalisha cheti pekee humwacha mteja ashindwe kuthibitisha, bila kujali unafunga kwa muundo upi.
Kiendelezi ni kidokezo, si mkataba. Faili zinazoishia .cer na .crt zinaonekana katika usimbaji wote wawili, na vifaa husafirisha vyeti vya DER kwa majina ya .pem mara nyingi vya kutosha kwamba kukisia kutokana na kiambishi hupoteza mchana mzima. Soma baiti za kwanza badala yake: faili ya PEM huanza na mstari wa BEGIN, wakati DER huanza na 0x30 kwa sababu muundo wa nje ni SEQUENCE.
Kwa nini uingizaji hushindwa kwa kweli
Ujumbe wa makosa wa mteja hufinyanga matatizo kadhaa tofauti kuwa sentensi moja kuhusu cheti batili, kwa hiyo yatenganishe kwa sababu. Linalojulikana zaidi ni kutokulingana kwa usimbaji: mteja anayechanganua PEM hurudisha kosa la uchanganuzi kwenye faili ya DER, na suluhisho ni kubadilisha muundo badala ya cheti kipya. La pili ni ufunguo unaokosekana, ambapo cheti ni sawa na utambulisho hauwezi kuthibitishwa. La tatu ni mnyororo, ambapo kifurushi kisicho na kati yake huonekana sawa kwenye kidirisha cha uingizaji na hushindwa wakati wa handshake.
Vigezo vya usimbaji husababisha la nne, na linaonekana kama nenosiri lisilo sahihi. Vifaa vya zamani vilisafirisha faili za PKCS12 kwa RC2-40 na 3DES, ambazo OpenSSL 3 hukataa isipokuwa provider ya zamani imepakiwa. Kusafirisha tena kutoka kwenye kifaa kwa AES-256-CBC na PBKDF2 ndiyo suluhisho la kudumu. Kuacha cipher za zamani zimewashwa daima kwenye mashine ya mteja ili kukidhi faili moja ni biashara mbaya.
La tano ni utata. Chombo kilicho na funguo mbili na vyeti viwili, au faili ya PEM iliyo na vizuizi vitatu vya CERTIFICATE, humlazimu mteja kuchagua, na mara nyingi chaguo lake huwa kitu cha kwanza. Tuneli inapoinuka na utambulisho usio sahihi, hiyo ndiyo sababu ya kawaida.
Chunguza kabla ya kubadilisha
Soma muundo bila kuchapisha siri. openssl pkcs12 -in bundle.p12 -info -noout huripoti algoriti za usimbaji na majina ya utambulisho huku ikizuia matokeo ya ufunguo na cheti, na mwongozo wa openssl-pkcs12 hufafanua bendera. Kuondoa -noout na kuongeza -nodes ni kwa ajili ya kuzalisha faili unazokusudia kuhifadhi, si kwa kuangalia haraka, kwa sababu huandika ufunguo wa faragha wazi.
Kwa cheti, openssl x509 -in cert.pem -noout -subject -issuer -dates hujibu kile ambacho kidirisha cha uingizaji hakitajibu, na kuongeza -ext subjectAltName huonyesha majina ambayo cheti ni halali kwa kweli. Ikiwa faili ni DER, ongeza -inform DER; bendera hiyo moja hutatua hitilafu nyingi za upakiaji.
Kuoanisha ufunguo na cheti ni kazi ya kiufundi, na inafaa kufanywa kabla ya uingizaji wowote:
openssl x509 -in cert.pem -noout -pubkey | openssl sha256openssl pkey -in key.pem -pubout | openssl sha256
Dijesti zinazolingana humaanisha kwamba jozi hizo zinahusiana. Dijesti tofauti humaanisha kuwa una ufunguo usio sahihi, na hakuna kiasi cha kubadilisha muundo kitakachobadilisha hilo.
Kile ambacho muundo haubadilishi kamwe
Maamuzi ya uaminifu hufanyika juu ya chombo. Mteja hupita mnyororo hadi mzizi ulio katika hifadhi yake, hukagua kipindi cha uhalali, hukagua matumizi ya ufunguo yaliyopanuliwa kwa uthibitishaji wa mteja, na kwa upande wa seva hukagua kwamba jina alilopiga linaonekana kwenye cheti. Hakuna hatua hizo inayosoma kiendelezi cha faili.
Ndiyo sababu kubadilisha jina la faili hadi kosa litoweke ni njia ya kuaminika ya kupoteza muda. Uingizaji hufanikiwa, utambulisho bado si sahihi, na kushindwa huonekana tena wakati wa handshake ambapo ujumbe hausaidii sana. Ndiyo sababu pia kifurushi kilichosafirishwa miaka miwili iliyopita huingia vizuri na bado hukataliwa: tarehe ya mwisho ilisafiri ndani ya cheti, si katika jina la faili.
Mpangilio unaoepusha kazi ya kurudia
Uliza nyaraka za mteja ni usimbaji gani unakubali na chombo gani kinachotarajiwa kwa utambulisho wa mteja, kisha angalia kile ulichopewa. Ikiwa mteja anataka utambulisho mmoja unaoweza kuingizwa na una faili za PEM zilizoachana, jenga kifurushi mara moja kwa nenosiri unalodhibiti na uhifadhi vyanzo. Ikiwa anataka PEM, toa ufunguo na mnyororo, kisha uondoe faili za kati baadaye kupitia mchakato wowote wa kushughulikia vitambulisho ambao timu yako tayari inatumia.
Baada ya uingizaji, thibitisha utambulisho badala ya kidirisha: mada, mtoaji, tarehe ya mwisho, na jina ambalo mteja atawasilisha. Jina la kirafiki kwenye orodha ni lebo, si utambulisho uliothibitishwa. Ikiwa tuneli itashindwa baada ya hapo, unachunguza uthibitishaji au uelekezaji badala ya ufungashaji, na hiyo ni mazungumzo mafupi zaidi.