Sama tiedostonimi ca.crt, eri sertifikaatti: mitä vertailla
Kaksi profiilia voi toimittaa ca.crt-tiedoston eri sisällöillä. Ota sormenjälki siitä, mitä prosessi lataa, ja tarkista sitten, onko se aiottu luottamuksen ankkuri.
Kaksi profiilia toimittaa molemmat tiedoston nimeltä ca.crt, toinen tunneli nousee ja toinen epäonnistuu ketjuvirheeseen. Kahden tiedoston avaaminen vierekkäin ratkaisee sen harvoin, ja vahvistuksen kytkeminen pois päältä ratkaisee sen väärään suuntaan. Kysymys, jonka virhe oikeastaan esittää, on kapeampi: minkä sertifikaatin kukin prosessi lataa luottamuksen ankkurikseen, ja ovatko ne kaksi sama objekti? Vastaa siihen ensin, niin diagnoosin loppuosa saa suunnan. Tiedostonimi on pakkausetiketti, eikä profiiliin kirjoitettu polku ole sekään ratkaiseva, joten kaikki riippuu siitä, mitä prosessi todella lukee.
Etsi sertifikaatti, jonka asiakas todella lataa
OpenVPN hyväksyy auktoriteetin kahdessa muodossa, ja muoto ratkaisee, mitkä tavut merkitsevät. Profiili voi osoittaa ulkoiseen tiedostoon ca-asetuksella tai upottaa sertifikaatin profiilin omaan <ca>-lohkoon. Kun molemmat ovat olemassa, upotettu lohko voittaa eikä profiilin vieressä olevaa tiedostoa avata koskaan.
Lue epäonnistuva profiili ja selvitä, kumpaa muotoa se käyttää, ennen kuin vertailet mitään. Naapurihakemistosta tai paketista, josta toinen profiili tuli, otettu kopio ei kerro sinulle mitään siitä, mihin tämä prosessi luottaa. Sama pätee kokoonpanon polkuun: se ratkaistaan suhteessa siihen, missä asiakas käynnistettiin, eikä se ole aina hakemisto, jota katsot. Lue profiilia, älä kansiota.
Sertifikaatit tunnistetaan sisällöstään: julkinen avain, subjekti ja myöntäjä, voimassaoloikkuna ja allekirjoitus kaiken sen yli. Kaksi tiedostoa, joissa on samat tavut, ovat sama sertifikaatti nimestä riippumatta, ja kaksi samannimistä tiedostoa voivat olla toisiinsa liittymättömiä auktoriteetteja. Nimi on pakkausetiketti, ei identiteetti.
Ota molempien kopioiden sormenjälki openssl:llä
Sormenjälki on tiiviste sertifikaatin DER-koodauksesta, muodosta, jonka allekirjoitus kattaa, joten rivinvaihdot ja otsikkoteksti eivät voi vaikuttaa siihen. Laske se kullekin tiedostolle, niin sinulla on kaksi kaksoispisteellä erotettua heksadesimaalijonoa, jotka joko täsmäävät tai eivät. Vertailukysymykseen vastaamiseksi sertifikaatista ei tarvitse lukea mitään muuta.
openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256
On houkuttelevaa osoittaa openssl itse profiiliin, mutta se lukee ensimmäisen sertifikaattilohkon, joka tiedostossa esiintyy, ja profiilissa on yleensä <cert> ennen <ca>. Pura auktoriteetin lohko ja ota sitten sormenjälki puretusta tiedostosta, koska se on kopio, jota asiakas todella käyttää.
sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256
Samat sormenjäljet tarkoittavat, että luottamusmateriaali on sama ja ketjuvirheellä on jokin muu syy, mikä on eri tutkinta. Erilaiset sormenjäljet tarkoittavat eri sertifikaatteja, ja siitä seuraava jakso alkaa.
Lue poikkeama ennen kuin oletat hyökkäyksen
Erilaiset sormenjäljet tarkoittavat eri sertifikaatteja eikä mitään muuta. Uudelleenmyöntäminen, rotaatio, uudelleennimetty auktoriteetti tai vanhentunut nippu tuottavat kaikki erilaisia tiedostoja täysin laillisilla historioilla. Kumpi kuuluu käyttöönottoon, on kysymys operaattorille tai käyttöönottokirjaukselle, ei tiedoston muokkausajalle. Arkistot kopioivat aikaleimoja, joten uudempi tiedosto ei ole automaattisesti oikea ankkuri.
Itseään allekirjoittava juuri on normaali, joten sellaisen löytäminen ei ole todiste ongelmasta. Tarkistajan tehtävä on rakentaa polku palvelimen sertifikaatista hänelle annettuun ankkuriin, ja ketjuvirhe tarkoittaa yleensä, että tätä polkua ei voitu täydentää.
Tarkista, onko epäonnistuvan profiilin ankkuri auktoriteetti, josta käyttöönotto edelleen myöntää. Jos sormenjälki ei vastaa mitään käyttöönottokirjauksessa, profiili on yksinkertaisesti vanhentunut, eikä mikään asiakaspään säätö korjaa sitä.
Korjaa luottamus kytkemättä vahvistusta pois
Lyhyen aikavälin korjaus on kytkeä vahvistus pois tai lisätä jokainen ketjun sertifikaatti ankkuriksi. Molemmat saavat viestin katoamaan, ja molemmat muuttavat sitä, mitkä palvelimet asiakas hyväksyy siitä eteenpäin. Kytke vahvistus takaisin päälle, asenna aiottu ankkuri ja testaa uudelleen.
Jos ketju nyt rakentuu mutta eri virhe ilmestyy, se on edistystä: nimen vahvistus, voimassaolopäivät ja mitätöinti ovat erillisiä tarkistuksia erillisine viesteineen. Pidä sormenjälkipari ja alkuperäinen virheteksti yhdessä tiketissä, jotta seuraava henkilö näkee, mikä ankkuri ladattiin ja mitä odotettiin. Sormenjälkipari on tarpeeksi pieni liitettäväksi luovutusmuistioon, ja seuraava tapaus vie silloin viisi minuuttia iltapäivän sijaan.
Hanki oikea auktoriteetti samasta todennetusta kanavasta, joka toimitti profiilin. Sertifikaatin vetäminen palvelimelta siksi, että sen subjekti näyttää tutulta, on eri teko, ja se laajentaa hiljaa sitä, mihin asiakas luottaa.