Tas pats failo pavadinimas ca.crt, kitas sertifikatas: ką lyginti
Du profiliai gali pateikti skirtingo turinio ca.crt. Paimkite tai, ką procesas įkelia, pirštų atspaudą ir patikrinkite, ar tai numatytas pasitikėjimo inkaras.
Du profiliai abu pateikia failą pavadinimu ca.crt, vienas tunelis pakyla, o kitas nepavyksta su grandinės klaida. Abiejų failų atidarymas greta to beveik niekada neišsprendžia, o patikros išjungimas išsprendžia tai neteisinga kryptimi. Klaida iš tikrųjų užduoda siauresnį klausimą: kurį sertifikatą kiekvienas procesas įkelia kaip savo pasitikėjimo inkarą ir ar tie du yra tas pats objektas? Atsakykite į tai pirmiausia ir likusi diagnozės dalis įgaus kryptį. Failo pavadinimas yra pakavimo etiketė, o profilyje įrašytas kelias taip pat nėra autoritetingas, todėl viskas priklauso nuo to, ką procesas iš tikrųjų skaito.
Raskite sertifikatą, kurį klientas iš tikrųjų įkelia
OpenVPN priima instituciją dviem formomis, ir forma nusprendžia, kurie baitai yra svarbūs. Profilis gali nurodyti išorinį failą su ca arba įterpti sertifikatą į <ca> bloką pačiame profilyje. Kai yra abu, laimi įterptasis blokas, o failas šalia profilio niekada neatidaromas.
Perskaitykite nepavykusį profilį ir išsiaiškinkite, kurią formą jis naudoja, prieš ką nors lygindami. Kopija, paimta iš gretimo katalogo arba iš paketo, iš kurio atėjo kitas profilis, nieko nepasako apie tai, kuo šis procesas pasitiki. Tas pats galioja ir konfigūracijos keliui: jis sprendžiamas atsižvelgiant į tai, kur buvo paleistas klientas, o tai ne visada tas katalogas, į kurį žiūrite. Skaitykite profilį, o ne aplanką.
Sertifikatai identifikuojami pagal jų turinį: viešąjį raktą, subjektą ir išdavėją, galiojimo laikotarpį ir visa tai apimantį parašą. Du failai su identiškais baitais yra tas pats sertifikatas, kad ir kaip jie vadinami, o du failai tuo pačiu pavadinimu gali būti nesusijusios institucijos. Pavadinimas yra pakavimo etiketė, ne tapatybė.
Paimkite abiejų kopijų pirštų atspaudą su openssl
Pirštų atspaudas yra maiša per sertifikato DER kodavimą, formą, kurią apima parašas, todėl eilučių pabaigos ir antraštės tekstas negali jo paveikti. Apskaičiuokite jį kiekvienam failui ir turėsite dvi dvitaškiu atskirtas šešioliktaines eilutes, kurios arba sutampa, arba ne. Norint atsakyti į palyginimo klausimą, nieko kito sertifikate skaityti nereikia.
openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256
Vilioti nukreipti openssl į patį profilį, bet jis nuskaito pirmąjį sertifikato bloką, kuris pasitaiko faile, o profilis paprastai turi <cert> prieš <ca>. Ištraukite institucijos bloką, tada paimkite ištraukto failo pirštų atspaudą, nes tai ta kopija, kurią klientas iš tikrųjų naudos.
sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256
Identiški pirštų atspaudai reiškia, kad pasitikėjimo medžiaga yra ta pati, o grandinės klaida turi kitą priežastį, ir tai yra kitas tyrimas. Skirtingi pirštų atspaudai reiškia skirtingus sertifikatus, ir būtent ten prasideda kitas skyrius.
Perskaitykite neatitikimą prieš manydami, kad tai ataka
Skirtingi pirštų atspaudai reiškia skirtingus sertifikatus ir nieko daugiau. Pakartotinis išdavimas, rotacija, pervadinta institucija ar pasenęs paketas visi sukuria skirtingus failus su visiškai teisėtomis istorijomis. Kuris priklauso diegimui, yra klausimas operatoriui arba diegimo įrašui, o ne failo modifikavimo laikui. Archyvai kopijuoja laiko žymes, todėl naujesnis failas nėra automatiškai teisingas inkaras.
Šaknis, kuri pasirašo pati save, yra normalu, todėl jos radimas nėra problemos įrodymas. Tikrintojo užduotis yra nutiesti kelią nuo serverio sertifikato iki jam duoto inkaras, o grandinės klaida paprastai reiškia, kad to kelio užbaigti nepavyko.
Patikrinkite, ar nepavykusio profilio inkaras yra institucija, iš kurios diegimas dar išduoda. Jei pirštų atspaudas nesutampa su niekuo diegimo įraše, profilis tiesiog pasenęs, ir joks kliento pusės derinimas to nepataisys.
Atkurkite pasitikėjimą neišjungdami patikros
Trumpalaikis sprendimas yra išjungti patikrą arba pridėti kiekvieną grandinės sertifikatą kaip inkarą. Abu variantai priverčia pranešimą išnykti, ir abu pakeičia, kuriuos serverius klientas nuo to laiko priims. Vėl įjunkite patikrą, įdiekite numatytą inkarą ir išbandykite iš naujo.
Jei grandinė dabar sukuriama, bet pasirodo kita klaida, tai pažanga: vardo patikra, galiojimo datos ir atšaukimas yra atskiri patikrinimai su atskirais pranešimais. Laikykite pirštų atspaudų porą ir pradinį klaidos tekstą kartu biliete, kad kitas žmogus matytų, kuris inkaras buvo įkeltas ir kurio buvo tikimasi. Pirštų atspaudų pora yra pakankamai maža, kad tilptų į perdavimo pastabą, o kitas atvejis tada užtruks penkias minutes vietoj popietės.
Gaukite teisingą instituciją tuo pačiu autentifikuotu kanalu, kuris pristatė profilį. Sertifikato ištraukimas iš serverio todėl, kad jo subjektas atrodo pažįstamas, yra kitas veiksmas, ir jis tyliai išplečia tai, kuo klientas pasitikės.