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 upisali lozinku ili je datoteka zapakirana šifrom koju klijent više ne isporučuje. To su različite greške s različitim ispravcima, 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.

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

.p12 datoteka je spremnik, 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 raspakirati, a build koji to radi nema implementaciju algoritma navedenog u datoteci.

Drugi je slučaj čest na današnjim sustavima jer je OpenSSL 3 premjestio skupinu starih algoritama u neobavezni legacy pružatelj. 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 upisivanje ne mijenja ništa.

Pročitajte spremnik bez zapisivanja ključa

Zamolite build OpenSSL-a na svom računalu da parsira datoteku i pročita toč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 dobivate 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 ponovno s dodanim -legacy i bez drugih promjena. Ta zastavica učitava legacy pružatelja samo za taj proces. Ona ne tjera VPN klijent da parsira stare pakete, ne dira sistemsku kripto politiku i predstavlja mjerenje, a ne popravak, jer datoteka se ipak mora zamijeniti.

Koja greška označava koju fazu

Kratka tablica drži tri ishoda odvojenima, 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 skupine. To je problem formata: DER datoteka preimenovana u .pem, kopija koju je iskvario uređivač koji je prepisao završetke redaka, ili nepotpuno preuzimanje. Usporedite kontrolni zbroj s onim koji je pošiljatelj 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 upisali ne poklapa s pohranjenom vrijednošću, što se događa zbog tipfelera, lozinke keširane iz ranijeg uvoza ili datoteke ponovno 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 poslužitelji već vjeruju.

Kada morate pretvarati lokalno, zamolite pkcs12 alat da ponovno zapakira vrećice umjesto da ih prvo izbaci. Držite obje lozinke izvan povijesti 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 poslužitelj lancu izdavatelja. Prepakiravanje 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 izradili

Čisto parsiranje u terminalu dokazuje da je spremnik 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 usporedite 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, usporedite ga s retkom iznad; ako prikazuje samo prijateljsko ime, provjerite datum isteka, jer ga je teže zamijeniti s drugim certifikatom istog izdavatelja.

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

Povezani članci