Stari P12 ne uspe v OpenSSL 3: napačno geslo ali stara šifra?
Ločite napačno vpisano geslo od starega paketa RC2, ki ga OpenSSL 3 noče razpakirati, in nato datoteko znova zapečatite brez odstranitve zaščite ključa.
Pogovorno okno za uvoz prevzame geslo, se za hip zavrti in nato sporoči, da paketa ne more prebrati. Nič v tem sporočilu ne pove, ali ste geslo vpisali napačno ali je bila datoteka zapečatena s šifro, ki je odjemalec ne prilaga več. To so različne okvare z različnimi popravki, napačna izbira pa vodi v znižanje različice odjemalca, ki odločitev le odloži. Opazovanje, v kateri fazi se odjemalec ustavi, ju loči v približno eni minuti.
Kaj se zgodi med pogovornim oknom in seznamom potrdil
Datoteka .p12 je vsebnik, ne potrdilo. Znotraj so ena ali več vrečk s potrdili in vrečka z zasebnim ključem, šifrirana s ključem, izpeljanim iz vašega gesla, poleg tega pa preverjanje celovitosti z imenom MAC nad celotno datoteko. Odpreti jo pomeni preveriti ta MAC, dešifrirati vrečko s ključem in uskladiti potrdilo s ključem, ki pride ven.
Težava z geslom se pojavi v fazi MAC. Težava s šifro se pojavi pozneje, ko je treba vrečko s ključem razpakirati in gradnja, ki to počne, nima implementacije algoritma, navedenega v datoteki.
Drugi primer je v današnjih sistemih pogost, ker je OpenSSL 3 premaknil skupino starih algoritmov v izbirni legacy provider. Paketi, izvoženi z OpenSSL 1.x, so običajno zapečatili potrdila s 40-bitno RC2 in zasebni ključ s triključnim Triple DES. Privzeta gradnja OpenSSL 3 še vedno preveri MAC s pravilnim geslom in nato spodleti na vrečki, zato geslo ni bilo nikoli napačno in ponovni vnos ničesar ne spremeni.
Preberite vsebnik, ne da bi izpisali ključ
Prosite gradnjo OpenSSL na svojem računalniku, naj datoteko razčleni in prebere točko, kjer obupa. Pregled brez izhodne datoteke pusti ključ šifriran na disku in to je edini razlog, da je ta korak varen na deljenem gostitelju.
openssl pkcs12 -in vpn-identity.p12 -info -nooutNa starem paketu s pravilnim geslom to izpiše atribute vrečke in se nato ustavi z digital envelope routines::unsupported. Z napačnim geslom dobite Mac verify error: invalid password?, preden se prebere katera koli vrečka. Sporočili kažeta v nasprotni smeri in prav to informacijo je odjemalec zamolčal.
Če je okvara tista s nepodprtim algoritmom, zaženite isti ukaz znova z dodanim -legacy in ničemer drugim nespremenjenim. Ta zastavica naloži legacy provider samo za ta en proces. Odjemalca VPN ne sili k razčlenjevanju starih paketov, ne posega v sistemsko kriptopolitiko in je meritev, ne popravilo, ker je treba datoteko še vedno zamenjati.
Katera napaka pomeni katero fazo
Kratka preglednica drži tri izide narazen, besedilo pa je pomembnejše od tega, kje se je pogovorno okno pojavilo.
| Text you see | Stage | What it tells you |
|---|---|---|
Mac verify error: invalid password? | Integrity check | Passphrase or cached credential, not the cipher |
digital envelope routines::unsupported | Bag decrypt | Algorithm missing from the default provider |
not enough data / header too long | Container format | Wrong encoding, edited file, or truncated download |
Besedilo, kot je not enough data ali header too long, ne spada v nobeno od prvih dveh skupin. To je težava oblike: datoteka DER, preimenovana v .pem, kopija, ki jo je pokvaril urejevalnik, ki je prepisal konce vrstic, ali nepopoln prenos. Preden začnete gledati šifre, primerjajte kontrolno vsoto s tisto, ki jo je poslal izdajatelj.
Obravnavajte Mac verify error le kot dokaz o geslu. Pomeni, da se MAC, izračunan iz vpisanega, ne ujema s shranjeno vrednostjo, kar se zgodi zaradi tipkarske napake, zaradi gesla iz predpomnilnika prejšnjega uvoza ali zaradi datoteke, znova izvožene pod drugim geslom. O tem, ali so algoritmi znotraj stari, ne pove ničesar.
Zgradite paket, ki ga odjemalec res lahko odpre
Ko legacy razčlenjevalnik potrdi, da je datoteka zdrava, je trajna rešitev zamenjava, katere algoritme podpira ciljni odjemalec: AES-256-CBC za vrečki s ključem in potrdili, PBKDF2 s SHA-256 za izpeljavo in SHA-256 za MAC. Vaš skrbnik PKI lahko to izvozi iz istega ključnega gradiva, potrdilo znotraj pa ostane tisto, ki mu vaši strežniki že zaupajo.
Ko morate pretvoriti lokalno, prosite orodje pkcs12, naj vrečke znova zapečati, namesto da bi jih najprej izpljunilo. Obe gesli držite zunaj zgodovine lupine tako, da ju berete 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.passUspešna pretvorba ne pove ničesar o veljavnosti, uporabi ključa, ujemanju zasebnega ključa ali o tem, ali strežnik zaupa izdajateljski verigi. Ponovno pakiranje je sprememba prevoza, ne obnova, in vsaka od teh stvari še vedno potrebuje svoje preverjanje.
Izpusite vsak recept, ki zapiše nezaščiten vmesni ključ ali prazno izhodno geslo samo zato, ker je odjemalec datoteko nato sprejel. Berljiv paket z odstranjeno zaščito je slabši izid od okvare pri uvozu, s katero ste začeli.
Potrdite, da je odjemalec uvozil datoteko, ki ste jo zgradili
Čisto razčlenjevanje v terminalu dokaže, da je vsebnik veljaven. Ne dokaže, da ga je odjemalec izbral, ker lahko preostali profil še naprej kaže na staro datoteko, nekateri odjemalci pa uvoženo identiteto shranijo v predpomnilnik pod imenom, ki ga niste izbrali.
Izpišite identiteto, ki jo boste uvozili, in jo primerjajte s tem, kar odjemalec prikaže v pogledu potrdil.
openssl pkcs12 -in vpn-identity-aes.p12 -clcerts -nokeys -passin file:new.pass \
| openssl x509 -noout -subject -dates -fingerprint -sha256Najprej odstranite zastarel vnos profila, nato uvozite. Če odjemalec beleži zadevo ali prstni odtis, ki ga je naložil, ga primerjajte z vrstico zgoraj; če prikazuje le prijazno ime, raje preverite datum poteka, ker ga je težje zamenjati z drugim potrdilom istega izdajatelja.
Referenca PKCS12 navaja provider, geslo in izhodne možnosti, uporabljene tukaj. Držanje legacy provider zunaj okolja odjemalca je bistvo: merite z njim, dostavljajte brez njega in pustite zasebni ključ zaščiten na disku.