Dijalog za uvoz primi vašu lozinku, vrti se trenutak, a zatim kaže da ne može pročitati paket. Ništa u toj poruci ne govori jeste li pogrešno otkucali lozinku ili je datoteka zapakirana šifrom koju klijent više ne isporučuje. To su različite greške s različitim ispravkama, a pogrešan odabir vodi do vraćanja na stariju verziju klijenta što samo odgađa odluku. Praćenje faze u kojoj se klijent zaustavlja razdvaja ih za otprilike minutu.

Šta se događa između dijaloga i popisa certifikata

.p12 datoteka je kontejner, a ne certifikat. Unutra su jedna ili više vrećica s certifikatima i vrećica s privatnim ključem šifrirana ključem izvedenim iz vaše lozinke, plus provjera cjelovitosti zvana MAC nad cijelom datotekom. Otvoriti je znači provjeriti taj MAC, dešifrirati vrećicu s ključem i uskladiti certifikat s ključem koji iz nje izlazi.

Problem s lozinkom javlja se u koraku MAC. Problem sa šifrom javlja se kasnije, kada vrećicu s ključem treba raspakovati, a build koji to radi nema implementaciju algoritma navedenog u datoteci.

Drugi slučaj je čest na današnjim sistemima jer je OpenSSL 3 premjestio grupu starih algoritama u neobavezni legacy provajder. Paketi koje izvozi OpenSSL 1.x obično su certifikate zapakirali 40-bitnim RC2, a privatni ključ troključnim Triple DES-om. Zadani build OpenSSL 3 još uvijek provjerava MAC s vašom ispravnom lozinkom i zatim pada na vrećici, pa lozinka nikada nije bila pogrešna i ponovno tipkanje ne mijenja ništa.

Pročitajte kontejner bez zapisivanja ključa

Zamolite build OpenSSL-a na svom računaru da parsira datoteku i pročita tačku na kojoj odustaje. Provjera bez izlazne datoteke ostavlja ključ šifriran na disku, i to je jedini razlog zašto je ovaj korak siguran na dijeljenom hostu.

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

Na zastarjelom paketu s ispravnom lozinkom ovo ispiše atribute vrećice, a zatim se zaustavi s digital envelope routines::unsupported. S pogrešnom lozinkom dobijate Mac verify error: invalid password? prije nego se pročita ijedna vrećica. Dvije poruke pokazuju u suprotnim smjerovima, a to je upravo informacija koju je klijent prešutio.

Ako je greška ona s nepodržanim algoritmom, pokrenite istu naredbu ponovo s dodanim -legacy i bez drugih promjena. Ta zastavica učitava legacy provajder samo za taj proces. Ona ne tjera VPN klijent da parsira stare pakete, ne dira sistemsku kripto politiku i predstavlja mjerenje, a ne popravku, jer datoteka se ipak mora zamijeniti.

Koja greška označava koju fazu

Kratka tabela drži tri ishoda odvojenim, a formulacija je važnija od toga gdje 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 poput not enough data ili header too long ne pripada ni jednoj od prve dvije grupe. To je problem formata: DER datoteka preimenovana u .pem, kopija koju je iskvario editor koji je prepisao završetke redova, ili nepotpuno preuzimanje. Uporedite kontrolni zbir s onim koji je pošiljalac poslao prije nego što počnete gledati šifre.

Tretirajte Mac verify error samo kao dokaz o lozinci. Znači da se MAC izračunat iz onoga što ste otkucali ne poklapa sa sačuvanom vrijednošću, što se događa zbog tipfelera, lozinke keširane iz ranijeg uvoza ili datoteke ponovo izvezene pod drugom lozinkom. Ne govori ništa o tome jesu li algoritmi unutra stari.

Napravite paket koji klijent zaista može otvoriti

Kada legacy parser potvrdi da je datoteka ispravna, trajno rješenje je zamjena čije algoritme ciljni klijent podržava: AES-256-CBC za vrećice s ključem i certifikatima, PBKDF2 sa SHA-256 za izvođenje i SHA-256 za MAC. Vaš PKI administrator to može izvesti iz istog ključnog materijala, a certifikat unutra ostaje onaj kojem vaši serveri već vjeruju.

Kada morate pretvarati lokalno, zamolite pkcs12 alat da ponovo zapakuje vrećice umjesto da ih prvo izbaci. Držite obje lozinke izvan historije ljuske 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

Uspješna konverzija ne govori ništa o isteku, namjeni ključa, podudaranju privatnog ključa ili tome vjeruje li server lancu izdavaoca. Prepakivanje je promjena transporta, a ne obnova, i svaka od tih stvari i dalje traži vlastitu provjeru.

Preskočite svaki recept koji zapisuje nezaštićeni posrednički ključ ili praznu izlaznu lozinku samo zato što je klijent potom prihvatio datoteku. Čitljiv paket sa skinutom zaštitom gori je ishod od greške uvoza s kojom ste počeli.

Potvrdite da je klijent uvezao datoteku koju ste napravili

Čisto parsiranje u terminalu dokazuje da je kontejner valjan. Ne dokazuje da ga je klijent odabrao, jer zaostali profil može nastaviti pokazivati na staru datoteku, a neki klijenti keširaju uvezeni identitet pod imenom koje niste odabrali.

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

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

Prvo uklonite zastarjeli unos profila, pa uvezite. Ako klijent bilježi subjekt ili otisak koji je učitao, uporedite ga s redom iznad; ako prikazuje samo prijateljsko ime, provjerite datum isteka, jer ga je teže zamijeniti s drugim certifikatom istog izdavaoca.

PKCS12 referenca navodi ovdje korištene opcije provajdera, lozinke i izlaza. Poenta je držati legacy provajder izvan klijentskog okruženja: mjerite s njim, isporučujte bez njega i ostavite privatni ključ zaštićen na disku.

Povezani članci