Dijalog za uvoz uzima lozinku, zavrti se na trenutak i zatim kaže da ne može da pročita paket. Ništa u toj poruci ne kaže da li ste pogrešno otkucali lozinku ili je datoteka zapečaćena šifrom koju klijent više ne isporučuje. To su različiti kvarovi sa različitim popravkama, a pogrešan izbor vodi ka smanjenju verzije klijenta koje samo odlaže odluku. Posmatranje faze u kojoj se klijent zaustavlja razdvaja ih za oko minut.

Šta se dešava između dijaloga i liste sertifikata

.p12 datoteka je kontejner, a ne sertifikat. Unutra je jedna ili više kesa sa sertifikatima i kesa sa privatnim ključem koja je šifrovana ključem izvedenim iz vaše lozinke, plus provera integriteta zvana MAC nad celom datotekom. Otvoriti je znači proveriti taj MAC, dešifrovati kesu sa ključem i upariti sertifikat sa ključem koji izlazi.

Problem sa lozinkom se pojavljuje u fazi MAC. Problem sa šifrom se pojavljuje kasnije, kada kesu sa ključem treba raspakovati i kada builda koja to radi nema implementaciju algoritma navedenog u datoteci.

Drugi slučaj je čest na današnjim sistemima jer je OpenSSL 3 premestio grupu starih algoritama u opcioni legacy provider. Paketi koje je izvezao OpenSSL 1.x obično su pečatili sertifikate 40-bitnim RC2, a privatni ključ troključnim Triple DES-om. Podrazumevana builda OpenSSL 3 i dalje proverava MAC sa ispravnom lozinkom i zatim pada na kesi, pa lozinka nikada nije bila pogrešna i ponovno kucanje ništa ne menja.

Pročitajte kontejner bez ispisivanja ključa

Zatražite od OpenSSL builde na vašem računaru da parsira datoteku i pročita tačku u kojoj odustaje. Pregled bez izlazne datoteke ostavlja ključ šifrovan na disku, i to je jedini razlog zbog kojeg je ovaj korak bezbedan na deljenom hostu.

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

Na starom paketu sa ispravnom lozinkom ovo ispisuje atribute kese i zatim se zaustavlja sa digital envelope routines::unsupported. Sa pogrešnom lozinkom dobijate Mac verify error: invalid password? pre nego što se bilo koja kesa pročita. Dve poruke pokazuju u suprotnim smerovima, i to je upravo informacija koju je klijent prećutao.

Ako je kvar onaj sa nepodržanim algoritmom, pokrenite istu komandu ponovo sa dodatim -legacy i ničim drugim izmenjenim. Ta zastavica učitava legacy provider samo za taj jedan proces. Ona ne tera VPN klijent da parsira stare pakete, ne dira sistemsku kripto politiku i predstavlja merenje, a ne popravku, jer datoteka i dalje mora da se zameni.

Koja greška znači koja faza

Kratka tabela razdvaja tri ishoda, a formulacija je važnija od mesta na kojem se dijalog pojavio.

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

Tekst kao not enough data ili header too long ne pripada nijednoj od prve dve grupe. To je problem formata: DER datoteka preimenovana u .pem, kopija koju je pokvario editor koji je prepisao krajeve redova, ili nepotpuno preuzimanje. Uporedite kontrolnu sumu sa onom koju je poslao izdavalac pre nego što počnete da gledate šifre.

Tretirajte Mac verify error samo kao dokaz o lozinki. To znači da se MAC izračunat iz onoga što ste otkucali ne poklapa sa sačuvanom vrednošću, što se dešava zbog greške u kucanju, lozinke iz keša prethodnog uvoza ili datoteke ponovo izvezene pod drugom lozinkom. Ne govori ništa o tome da li su algoritmi unutra stari.

Napravite paket koji klijent zaista može da otvori

Kada legacy parser potvrdi da je datoteka zdrava, trajno rešenje je zamena čije algoritme ciljni klijent podržava: AES-256-CBC za kese sa ključem i sertifikatima, PBKDF2 sa SHA-256 za izvođenje i SHA-256 za MAC. Vaš PKI administrator može to da izveze iz istog ključnog materijala, a sertifikat unutra ostaje onaj kojem vaši serveri već veruju.

Kada morate lokalno da konvertujete, zamolite pkcs12 alat da ponovo zapečati kese umesto da ih prvo isprazni. Držite obe lozinke van istorije školjke tako što ćete ih čitati iz datoteke.

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

Uspešna konverzija ne govori ništa o isteku, nameni ključa, poklapanju privatnog ključa ili o tome da li server veruje lancu izdavaoca. Ponovno pakovanje je promena transporta, a ne obnova, i svaka od tih stavki i dalje traži sopstvenu proveru.

Preskočite svaki recept koji upisuje nezaštićeni međuključ ili praznu izlaznu lozinku samo zato što je klijent zatim prihvatio datoteku. Čitljiv paket sa skinutom zaštitom je gori ishod od kvara pri uvozu sa kojim ste počeli.

Potvrdite da je klijent uvezao datoteku koju ste napravili

Čisto parsiranje u terminalu dokazuje da je kontejner ispravan. Ne dokazuje da ga je klijent izabrao, jer profil koji je ostao može i dalje da pokazuje na staru datoteku, a neki klijenti keširaju uvezeni identitet pod imenom koje niste izabrali.

Ispišite identitet koji ćete uvesti i uporedite ga sa onim što klijent prikazuje u pregledu sertifikata.

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

Prvo uklonite zastareli unos profila, pa zatim uvezite. Ako klijent beleži subjekat ili otisak koji je učitao, uporedite ga sa linijom iznad; ako prikazuje samo prijateljsko ime, proverite datum isteka, jer je teže pomešati ga sa drugim sertifikatom istog izdavaoca.

PKCS12 referenca navodi provider, lozinku i izlazne opcije koje se ovde koriste. Držanje legacy providera van klijentskog okruženja je poenta: merite sa njim, isporučujte bez njega i ostavite privatni ključ zaštićen na disku.

Povezani članci