Vanha P12 epäonnistuu OpenSSL 3:ssa: väärä salasana vai vanhentunut salaus?
Erota väärin kirjoitettu salalause vanhentuneesta RC2-paketista, jota OpenSSL 3 kieltäytyy purkamasta, ja sinetöi tiedosto sitten uudelleen poistamatta avaimen suojausta.
Tuontidialogi ottaa salasanasi, pyörii hetken ja sanoo sitten, ettei se voi lukea pakettia. Mikään siinä viestissä ei kerro, kirjoititko salalauseen väärin vai sinetöitiinkö tiedosto salauksella, jota asiakasohjelma ei enää toimita. Ne ovat eri virheitä eri korjauksin, ja väärä valinta johtaa asiakasohjelman version laskuun, mikä vain lykkää päätöstä. Seuraamalla vaihetta, johon asiakasohjelma pysähtyy, erotat ne noin minuutissa.
Mitä dialogin ja varmenneluettelon välillä tapahtuu
.p12 tiedosto on säiliö, ei varmenne. Sisällä on yksi tai useampi varmennepussi ja yksityisavainpussi, joka on salattu salasanastasi johdetulla avaimella, sekä koko tiedoston kattava eheystarkistus nimeltä MAC. Sen avaaminen tarkoittaa tuon MACin tarkistamista, avainpussin salauksen purkamista ja varmenteen sovittamista siitä ulos tulevaan avaimeen.
Salasanaongelma tulee MAC-vaiheessa. Salausongelma tulee myöhemmin, kun avainpussi on purettava ja sen purkava koontiversio ei sisällä tiedostossa nimetyn algoritmin toteutusta.
Toinen tapaus on yleinen nykyjärjestelmissä, koska OpenSSL 3 siirsi joukon vanhoja algoritmeja valinnaiseen legacy-toimittajaan. OpenSSL 1.x:n viemät paketit sinetöivät varmenteet yleensä 40-bittisellä RC2:lla ja yksityisavaimen kolmiavaimisella Triple DESillä. OpenSSL 3:n oletuskoontiversio tarkistaa yhä MACin oikealla salasanallasi ja epäonnistuu sitten pussissa, joten salasana ei ollut koskaan väärä eikä sen uudelleen kirjoittaminen muuta mitään.
Lue säiliö kirjoittamatta avainta ulos
Pyydä oman koneesi OpenSSL-koontiversiota jäsentämään tiedosto ja lue kohta, jossa se luovuttaa. Tarkastus ilman tulostetiedostoa jättää avaimen salattuna levylle, ja se on ainoa syy siihen, miksi tämä vaihe on turvallinen jaetulla isännällä.
openssl pkcs12 -in vpn-identity.p12 -info -nooutVanhentuneessa paketissa oikealla salasanalla tämä tulostaa pussin attribuutit ja pysähtyy sitten digital envelope routines::unsupported-virheeseen. Väärällä salasanalla saat Mac verify error: invalid password? ennen kuin yhtään pussia luetaan. Kaksi viestiä osoittavat vastakkaisiin suuntiin, ja juuri se on se tieto, jonka asiakasohjelma pimitti.
Jos virhe on tukemattoman algoritmin virhe, suorita sama komento uudelleen -legacy lisättynä ja muuta muuta muuttamatta. Tämä valitsin lataa legacy-toimittajan vain kyseiselle prosessille. Se ei saa VPN-asiakasohjelmaa jäsentämään vanhoja paketteja, se ei koske järjestelmänlaajuiseen kryptopolitiikkaan, ja se on mittaus eikä korjaus, koska tiedosto on silti korvattava.
Mikä virhe tarkoittaa mitä vaihetta
Lyhyt taulukko pitää kolme tulosta erillään, ja sanamuoto on tärkeämpi kuin se, mihin dialogi ilmestyi.
| 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 |
Teksti kuten not enough data tai header too long ei kuulu kumpaankaan kahdesta ensimmäisestä ryhmästä. Se on muotoiluongelma: DER-tiedosto, joka on nimetty uudelleen .pem:ksi, editorin turmelema kopio, joka kirjoitti rivinloput uudelleen, tai keskeytynyt lataus. Vertaa tarkistussummaa siihen, jonka myöntäjä lähetti, ennen kuin alat katsoa salauksia.
Käsittele Mac verify error-virhettä todisteena vain salasanasta. Se tarkoittaa, että kirjoittamastasi laskettu MAC ei vastaa tallennettua arvoa, mitä tapahtuu kirjoitusvirheen, aiemmasta tuonnista välimuistiin jääneen salasanan tai toisella salalauseella uudelleen viedyn tiedoston vuoksi. Se ei kerro mitään siitä, ovatko sisällä olevat algoritmit vanhoja.
Rakenna paketti, jonka asiakasohjelma todella voi avata
Kun legacy-jäsennin on vahvistanut tiedoston olevan kunnossa, pysyvä korjaus on korvaava paketti, jonka algoritmit kohdeasiakasohjelma tukee: AES-256-CBC avain- ja varmennepusseille, PBKDF2 SHA-256:lla johtamiseen ja SHA-256 MACiin. PKI-ylläpitäjäsi voi viedä sen samasta avainmateriaalista, ja sisällä oleva varmenne pysyy samana, johon palvelimesi jo luottavat.
Kun sinun on muunnettava paikallisesti, pyydä pkcs12-työkalua sinetöimään pussit uudelleen sen sijaan että se ensin purkaisi ne. Pidä molemmat salalauseet poissa komentotulkin historiasta lukemalla ne tiedostosta.
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.passOnnistunut muunnos ei kerro mitään vanhenemisesta, avaimen käytöstä, yksityisavaimen vastaavuudesta tai siitä, luottaako palvelin myöntäjäketjuun. Uudelleenpakkaaminen on siirron muutos, ei uudistus, ja jokainen noista tarvitsee yhä oman tarkistuksensa.
Ohita jokainen resepti, joka kirjoittaa suojaamattoman väliavaimen tai tyhjän tulostussalasanan vain siksi, että asiakasohjelma hyväksyi tiedoston sen jälkeen. Luettava paketti, jonka suojaus on riisuttu, on huonompi lopputulos kuin tuontivirhe, jolla aloitit.
Vahvista, että asiakasohjelma toi juuri rakentamasi tiedoston
Puhdas jäsennys päätteessä todistaa, että säiliö on kelvollinen. Se ei todista, että asiakasohjelma valitsi sen, koska jäljelle jäänyt profiili voi yhä osoittaa vanhaan tiedostoon, ja jotkin asiakasohjelmat tallentavat tuodun identiteetin välimuistiin nimellä, jota et valinnut.
Tulosta identiteetti, jonka aiot tuoda, ja vertaa sitä siihen, mitä asiakasohjelma näyttää varmennenäkymässään.
openssl pkcs12 -in vpn-identity-aes.p12 -clcerts -nokeys -passin file:new.pass \
| openssl x509 -noout -subject -dates -fingerprint -sha256Poista ensin vanhentunut profiilimerkintä ja tuo sitten. Jos asiakasohjelma kirjaa lataamansa subjektin tai sormenjäljen, sovita se yllä olevaan riviin; jos se näyttää vain ystävällisen nimen, tarkista sen sijaan vanhenemispäivä, koska se on vaikeampi sekoittaa saman myöntäjän toiseen varmenteeseen.
PKCS12-viite luettelee tässä käytetyt toimittaja-, salalause- ja tulostusvalinnat. Tarkoitus on pitää legacy-toimittaja poissa asiakasohjelman ympäristöstä: mittaa sen kanssa, toimita ilman sitä ja jätä yksityisavain suojattuna levylle.