Pagalbos bilietas klausia, kuris sertifikatas yra VPN pakete, ir pirmas impulsas yra eksportuoti viską ir pridėti. P12 failas supakuoja sertifikatus ir privataus rakto medžiagą į vieną konteinerį, todėl eksportuoti viską yra būtent tai, ko nereikėtų siųsti. Komanda, atsakanti į klausimą, yra pasirinkimo problema, o ne konvertavimo. Keturios vėliavos nusprendžia, kurią konteinerio pusę gausite, ir dvi iš jų skamba saugiau, nei yra.

Pradėkite nuo konteinerio skaitymo, o ne nuo jo ištuštinimo.

Ką iš tikrųjų saugo PKCS12 failas

PKCS12 konteineris saugo vieną ar daugiau sertifikatų, galbūt privatų raktą ir message authentication code virš turinio. Sertifikatai gali apimti jūsų kliento tapatybės lapo sertifikatą ir tarpinius sertifikatus, kurie jį sieja su CA. Raktas, kai jis yra, yra tai, kas failą daro paslaptimi, o ne dokumentu.

Šis skirtumas yra priežastis, kodėl egzistuoja -nokeys ir kodėl tai yra vėliava, kurios reikia šiai užduočiai.

Perskaitykite paketą neišrašydami rakto

Patikros forma spausdina struktūrą ir algoritmų detales ir nieko nerašo: openssl pkcs12 -in client.p12 -info -noout. Ji prašo importo slaptažodžio, o tai yra tinkama vieta tai reikšmei, ir pasako, ar failas apskritai turi raktą. Naudokite -passin env:PKCS12_PASS, kai slaptažodžio negalima įvesti, nes slaptažodis shell komandoje yra slaptažodis procesų sąraše. Šis žingsnis nieko neeksportuoja, ir tai yra visa esmė.

Skaitykite išvestį dėl trijų dalykų: kiek sertifikatų, ar yra raktas ir kurie algoritmai jį saugo.

Naudokite -nokeys ir nepainiokite jo su -nocerts

-nokeys neleidžia privačių raktų ir palieka sertifikatus. -clcerts susiaurina tai iki kliento sertifikatų, -cacerts susiaurina iki CA sertifikatų, ir šios dvi yra filtrai, o ne alternatyvos. -nocerts skaitosi kaip saugi tos pačios idėjos rašyba ir reiškia priešingai: jokių sertifikatų, kas palieka tik raktus. Jo įmaišymas į sertifikatų eksportą yra būdas, kuriuo privatus raktas atsiduria diske.

Dviejų eilučių forma, kuri sukuria sertifikatų failą ir CA failą ir nieko daugiau, yra:

openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pem

Senuosius paketus reikia -legacy OpenSSL 3, kad perskaitytų savo senesnį šifravimą, ir ši vėliava keičia tai, ką priima analizatorius, o ne tai, ką jis išveda. Jei analizė nepavyksta su nepalaikomo algoritmo klaida, -legacy pridėjimas yra teisingas pirmas žingsnis, o MAC patikros praleidimas – ne.

Tikrinkite išvestį, o ne išėjimo kodą

Nulinis išėjimo statusas sako, kad komanda veikė, o ne kad faile yra tai, ko tikitės. Suskaičiuokite sertifikatus išvestyje ir perskaitykite subject ir datas: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint. Palyginkite pirštų atspaudą su tuo, kurio tikisi pagalbos komanda, nes paketas su dviem kliento sertifikatais sukuria failą su dviem blokais, o dauguma įrankių skaito tik pirmąjį. Paskirtis, pasitikėjimas ir rakto atitikimas vėl yra atskiri testai.

Sertifikatas, kurį galima išanalizuoti, yra sertifikatas, kurį galima išanalizuoti. Tai ne sertifikatas, kurį VPN priima.

Nuspręskite, ar failų apskritai reikia

Jei priimantis klientas importuoja PKCS12 tiesiogiai, pirminio paketo siuntimas patvirtintu kanalu, laikant slaptažodį atskirai, yra paprastesnis ir išsaugo apsaugą. Išgavimas skirtas patikrai, klientui, kuriam reikia PEM, arba pagalbos atvejui, kuris paprašė konkretaus artefakto. Kiekvienas išgavimas pašalina vieną sluoksnį ir turėtų turėti priežastį.

Viešieji sertifikatai neturi privataus rakto, bet turi vardus ir organizacijos duomenis. Bendrinkite laukus, kurių prašė bilietas, o ne failą, nebent buvo prašoma būtent failo.

Susiję straipsniai