Dialóg importu prevezme vaše heslo, chvíľu sa točí a potom oznámi, že balík nedokáže prečítať. Nič v tej správe nehovorí, či ste heslovú frázu napísali nesprávne alebo či bol súbor zapečatený šifrou, ktorú klient už nedodáva. Sú to rôzne zlyhania s rôznymi opravami a nesprávna voľba vedie k zníženiu verzie klienta, ktoré rozhodnutie iba odkladá. Sledovanie fázy, v ktorej sa klient zastaví, ich oddelí približne za minútu.

Čo sa deje medzi dialógom a zoznamom certifikátov

Súbor .p12 je kontajner, nie certifikát. Vnútri je jedna alebo viac vreciek s certifikátmi a vrecko so súkromným kľúčom zašifrované kľúčom odvodeným z vášho hesla, plus kontrola integrity s názvom MAC nad celým súborom. Otvoriť ho znamená overiť ten MAC, dešifrovať vrecko s kľúčom a priradiť certifikát ku kľúču, ktorý vyjde.

Problém s heslom prichádza vo fáze MAC. Problém so šifrou prichádza neskôr, keď treba vrecko s kľúčom rozbaliť a zostavenie, ktoré to robí, nemá implementáciu algoritmu uvedeného v súbore.

Druhý prípad je v dnešných systémoch bežný, pretože OpenSSL 3 presunul skupinu starých algoritmov do voliteľného legacy provider. Balíky exportované OpenSSL 1.x zvyčajne zapečatili certifikáty 40-bitovou RC2 a súkromný kľúč trojkľúčovým Triple DES. Predvolené zostavenie OpenSSL 3 stále overí MAC správnym heslom a potom zlyhá na vrecku, takže heslo nikdy nebolo nesprávne a prepísanie nič nezmení.

Prečítajte kontajner bez vypísania kľúča

Požiadajte zostavenie OpenSSL na svojom počítači, aby súbor analyzovalo a prečítalo miesto, kde to vzdá. Kontrola bez výstupného súboru nechá kľúč zašifrovaný na disku, a to je jediný dôvod, prečo je tento krok na zdieľanom hostiteľovi bezpečný.

openssl pkcs12 -in vpn-identity.p12 -info -noout

Na starom balíku so správnym heslom to vypíše atribúty vrecka a potom sa zastaví s digital envelope routines::unsupported. S nesprávnym heslom dostanete Mac verify error: invalid password? ešte pred prečítaním akéhokoľvek vrecka. Obe správy ukazujú opačným smerom a presne túto informáciu klient zamlčal.

Ak je zlyhanie to s nepodporovaným algoritmom, spustite ten istý príkaz znova s pridaným -legacy a ničím iným nezmeneným. Ten prepínač načíta legacy provider len pre ten jeden proces. Nenúti klienta VPN analyzovať staré balíky, nezasahuje do systémovej kryptopolitiky a je to meranie, nie oprava, pretože súbor aj tak treba nahradiť.

Ktorá chyba znamená ktorú fázu

Krátka tabuľka drží tri výsledky oddelene a formulácia je dôležitejšia než miesto, kde sa dialóg objavil.

Text you seeStageWhat it tells you
Mac verify error: invalid password?Integrity checkPassphrase or cached credential, not the cipher
digital envelope routines::unsupportedBag decryptAlgorithm missing from the default provider
not enough data / header too longContainer formatWrong encoding, edited file, or truncated download

Text ako not enough data alebo header too long nepatrí do žiadnej z prvých dvoch skupín. Je to problém formátu: súbor DER premenovaný na .pem, kópia poškodená editorom, ktorý prepísal konce riadkov, alebo neúplné stiahnutie. Predtým než sa začnete pozerať na šifry, porovnajte kontrolný súčet s tým, ktorý poslal vydavateľ.

Berte Mac verify error iba ako dôkaz o hesle. Znamená, že MAC vypočítaný z toho, čo ste napísali, nezodpovedá uloženej hodnote, čo sa stáva pri preklepe, pri hesle z vyrovnávacej pamäte z predchádzajúceho importu alebo pri súbore znova exportovanom pod inou heslovou frázou. O tom, či sú algoritmy vnútri staré, nehovorí nič.

Vytvorte balík, ktorý klient naozaj otvorí

Keď legacy parser potvrdí, že súbor je v poriadku, trvalým riešením je náhrada, ktorej algoritmy cieľový klient podporuje: AES-256-CBC pre vrecká s kľúčom a certifikátmi, PBKDF2 so SHA-256 na odvodzovanie a SHA-256 pre MAC. Váš správca PKI to môže exportovať z rovnakého kľúčového materiálu a certifikát vnútri zostáva ten, ktorému vaše servery už dôverujú.

Keď musíte konvertovať lokálne, požiadajte nástroj pkcs12, aby vrecká znova zapečatil, namiesto toho, aby ich najprv vyhodil. Držte obe heslové frázy mimo histórie shellu tým, že ich budete čítať zo súboru.

openssl pkcs12 -in vpn-identity.p12 -out vpn-identity-aes.p12 \
  -keypbe AES-256-CBC -certpbe AES-256-CBC -macalg sha256 \
  -passin file:old.pass -passout file:new.pass

Úspešná konverzia nehovorí nič o platnosti, použití kľúča, zhode súkromného kľúča ani o tom, či server dôveruje vydavateľskému reťazcu. Prebalenie je zmena transportu, nie obnova, a každá z tých vecí stále potrebuje vlastnú kontrolu.

Preskočte každý recept, ktorý zapisuje nechránený medzikľúč alebo prázdne výstupné heslo len preto, že klient potom súbor prijal. Čitateľný balík so strhnutou ochranou je horší výsledok než zlyhanie importu, s ktorým ste začali.

Potvrďte, že klient importoval súbor, ktorý ste vytvorili

Čisté sparsovanie v termináli dokazuje, že kontajner je platný. Nedokazuje, že si ho klient vybral, pretože zostávajúci profil môže stále ukazovať na starý súbor a niektorí klienti ukladajú importovanú identitu pod názov, ktorý ste nevybrali.

Vypíšte identitu, ktorú idete importovať, a porovnajte ju s tým, čo klient zobrazuje v zobrazení certifikátov.

openssl pkcs12 -in vpn-identity-aes.p12 -clcerts -nokeys -passin file:new.pass \
  | openssl x509 -noout -subject -dates -fingerprint -sha256

Najprv odstráňte zastaraný záznam profilu, potom importujte. Ak klient zaznamenáva subjekt alebo odtlačok, ktorý načítal, porovnajte ho s riadkom vyššie; ak zobrazuje iba priateľský názov, skontrolujte namiesto toho dátum platnosti, pretože ten sa ťažšie zamení s iným certifikátom toho istého vydavateľa.

Referencia PKCS12 uvádza provider, heslovú frázu a výstupné možnosti použité tu. Držanie legacy provider mimo prostredia klienta je podstatou: merajte s ním, dodávajte bez neho a nechajte súkromný kľúč chránený na disku.

Súvisiace články