Senas P12 failas nepavyksta OpenSSL 3: neteisingas slaptažodis ar senas šifras?
Atskirkite neteisingai įvestą slaptafrazę nuo seno RC2 rinkinio, kurio OpenSSL 3 atsisako išpakuoti, ir tada iš naujo užantspauduokite failą nepašalindami rakto apsaugos.
Importo dialogas priima jūsų slaptažodį, trumpam apsuka ir tada praneša, kad negali perskaityti rinkinio. Nieko tame pranešime nesako, ar neteisingai įvedėte slaptafrazę, ar failas buvo užantspauduotas šifru, kurio klientas nebeplatina. Tai skirtingos klaidos su skirtingais sprendimais, o neteisingas pasirinkimas veda prie kliento versijos sumažinimo, kuris tik atideda sprendimą. Stebėjimas, kuriame etape klientas sustoja, atskiria juos maždaug per minutę.
Kas vyksta tarp dialogo ir sertifikatų sąrašo
.p12 failas yra konteineris, o ne sertifikatas. Viduje yra vienas ar daugiau sertifikatų maišelių ir privataus rakto maišelis, užšifruotas raktu, išvestu iš jūsų slaptažodžio, be to, viso failo vientisumo patikra, vadinama MAC. Jį atidaryti reiškia patikrinti tą MAC, iššifruoti rakto maišelį ir suderinti sertifikatą su gautu raktu.
Slaptažodžio problema iškyla MAC etape. Šifro problema iškyla vėliau, kai rakto maišelį reikia išpakuoti, o tai darančiame rinkinyje nėra faile nurodyto algoritmo įgyvendinimo.
Antrasis atvejis dažnas dabartinėse sistemose, nes OpenSSL 3 senų algoritmų grupę perkėlė į pasirenkamą legacy provider. OpenSSL 1.x eksportuoti rinkiniai paprastai užantspauduodavo sertifikatus 40 bitų RC2, o privatų raktą – trijų raktų Triple DES. Numatytasis OpenSSL 3 rinkinys vis tiek patikrina MAC su teisingu slaptažodžiu, o po to nepavyksta ties maišeliu, tad slaptažodis niekada nebuvo neteisingas ir jo pervedimas nieko nekeičia.
Perskaitykite konteinerį neišrašydami rakto
Paprašykite savo kompiuteryje esančio OpenSSL rinkinio išanalizuoti failą ir parodyti, kur jis pasiduoda. Patikra be išvesties failo palieka raktą užšifruotą diske, ir tai vienintelė priežastis, kodėl šį žingsnį saugu atlikti bendrame serveryje.
openssl pkcs12 -in vpn-identity.p12 -info -nooutSu senu rinkiniu ir teisingu slaptažodžiu tai išspausdina maišelio atributus ir sustoja ties digital envelope routines::unsupported. Su neteisingu slaptažodžiu gaunate Mac verify error: invalid password? dar neperskaičius nė vieno maišelio. Abu pranešimai rodo priešingas puses, ir būtent šią informaciją klientas nuslėpė.
Jei klaida yra dėl nepalaikomo algoritmo, paleiskite tą pačią komandą dar kartą pridėję -legacy ir nieko daugiau nekeisdami. Ta vėliavėlė įkelia legacy provider tik tam vienam procesui. Ji neverčia VPN kliento analizuoti senų rinkinių, neliečia sisteminės kriptografijos politikos ir yra matavimas, o ne taisymas, nes failą vis tiek reikia pakeisti.
Kuri klaida reiškia kurį etapą
Trumpa lentelė atskiria tris baigtis, o formuluotė svarbesnė už tai, kur dialogas pasirodė.
| 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 |
Tekstas kaip not enough data ar header too long nepriklauso nė vienai iš pirmųjų dviejų grupių. Tai formato problema: DER failas, pervadintas į .pem, redaktoriaus sugadinta kopija, kuris perrašė eilučių pabaigas, arba nepilnai atsisiųstas failas. Prieš pradėdami žiūrėti į šifrus, palyginkite kontrolinę sumą su ta, kurią atsiuntė išdavėjas.
Mac verify error traktuokite tik kaip įrodymą apie slaptažodį. Tai reiškia, kad MAC, apskaičiuotas iš to, ką įvedėte, nesutampa su saugoma reikšme, o taip nutinka dėl rašybos klaidos, dėl slaptažodžio, išsaugoto ankstesnio importo metu, arba dėl failo, iš naujo eksportuoto su kita slaptafraze. Tai nieko nesako apie tai, ar viduje esantys algoritmai yra seni.
Sukurkite rinkinį, kurį klientas tikrai gali atidaryti
Kai legacy analizatorius patvirtina, kad failas sveikas, ilgalaikis sprendimas yra pakaitalas, kurio algoritmus palaiko tikslinis klientas: AES-256-CBC raktų ir sertifikatų maišeliams, PBKDF2 su SHA-256 išvedimui ir SHA-256 MAC. Jūsų PKI administratorius gali tai eksportuoti iš tos pačios raktų medžiagos, o viduje esantis sertifikatas lieka tas, kuriuo jūsų serveriai jau pasitiki.
Kai reikia konvertuoti vietoje, paprašykite pkcs12 įrankio iš naujo užantspauduoti maišelius, o ne pirmiau juos išmesti. Abi slaptafrazes laikykite toli nuo savo shell istorijos, skaitydami jas iš failo.
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.passSėkminga konversija nieko nesako apie galiojimo pabaigą, rakto paskirtį, privataus rakto atitikimą ar tai, ar serveris pasitiki išdavėjo grandine. Perpakavimas yra transportavimo pakeitimas, o ne atnaujinimas, ir kiekvienas iš jų vis tiek reikalauja atskiros patikros.
Praleiskite bet kurį receptą, kuris įrašo neapsaugotą tarpinį raktą arba palieka tuščią išvesties slaptažodį vien todėl, kad klientas tada priėmė failą. Perskaitomas rinkinys su nuimta apsauga yra blogesnis rezultatas nei importo klaida, nuo kurios pradėjote.
Patikrinkite, ar klientas importavo jūsų sukurtą failą
Švari analizė terminale įrodo, kad konteineris galioja. Ji neįrodo, kad klientas jį pasirinko, nes likęs profilis gali ir toliau rodyti į seną failą, o kai kurie klientai importuotą tapatybę kaupia cache pavadinimu, kurio nepasirinkote.
Išspausdinkite tapatybę, kurią ketinate importuoti, ir palyginkite ją su tuo, ką klientas rodo sertifikatų rodinyje.
openssl pkcs12 -in vpn-identity-aes.p12 -clcerts -nokeys -passin file:new.pass \
| openssl x509 -noout -subject -dates -fingerprint -sha256Pirmiausia pašalinkite pasenusį profilio įrašą, tada importuokite. Jei klientas registruoja įkeltą subjektą ar pirštų atspaudą, sulyginkite jį su eilute aukščiau; jei jis rodo tik draugišką pavadinimą, patikrinkite galiojimo pabaigos datą, nes ją supainioti su kitu to paties išdavėjo sertifikatu sunkiau.
PKCS12 nuoroda išvardija čia naudotus provider, slaptafrazės ir išvesties parametrus. Legacy provider laikymas už kliento aplinkos ribų ir yra esmė: matuokite su juo, išleiskite be jo ir palikite privatų raktą apsaugotą diske.