Android IKEv2 pasitikėjimo klaida: siųskite tarpinį CA, o ne šakninį
Telefonas atmeta šliuzą, nes gauta grandinė nutrūksta per anksti. Nuspręskite: siųsti tarpinį sertifikatą, taisyti tapatybę ar keisti rakto tipą.
Telefonas atsisako prisijungti ir išveda No trusted RSA public key found for vpn.example.net, nors tas pats šliuzo sertifikatas veikia nešiojamajame kompiuteryje tame pačiame tinkle. Viliojantis žingsnis – išduoti sertifikatą iš naujo. Prieš tai darydami išsiaiškinkite, kuri iš trijų gedimų rūšių pasireiškia, nes tik viena jų susijusi su sertifikato turiniu. Pranešimas apima nepilną grandinę, tapatybės neatitikimą ir nepalaikomą raktą ar parašą, ir kiekvienas turi skirtingą sprendimą.
Trys gedimai už vieno pranešimo
Android sudaro grandinę nuo šliuzo sertifikato iki VPN profilyje pasirinkto CA, tada patikrina serverio pavadinimą pagal profilį. Pranešimas nurodo rezultatą, o ne etapą. Pasitikėjimo gedimas reiškia, kad grandinės nebuvo galima užbaigti iš mainuose pateiktų sertifikatų; tapatybės gedimas reiškia, kad grandinė patvirtinta, bet pavadinimas neatitiko; algoritmo gedimas reiškia, kad įrenginys ar profilis nepriima rakto tipo ar parašo.
| What you see | What it points to | First move |
|---|---|---|
| Chain stops after the leaf in the daemon log | intermediate not loaded or not sent | load the intermediate as CA material |
| Chain validates, name differs from the profile | identity mismatch | fix the profile name or the certificate SAN |
| Chain validates, handshake still fails | key or signature not accepted | compare key type against the device |
Spręskite remdamiesi įrodymais, o ne bandydami sprendimus iš eilės. Vienas bandymas su 2 žurnalo lygiu prieš daemoną parodo, kurioje eilutėje esate, ir tai kainuoja mažiau nei iš naujo išduoti sertifikatą, kuris niekada nebuvo klaidingas.
Pirmiausia nuspręskite: ar atėjo visa grandinė?
strongSwan siunčia sertifikatą, sukonfigūruotą tai jungčiai, o tarpiniai sertifikatai yra atskiri kredencialai. Jie turi būti įkelti kaip CA sertifikatai, kad daemonas galėtų juos įdėti į apkrovą, todėl išdėstymas, kai serverio sertifikatą pasirašo tarpinis sertifikatas, šaknis yra pasitikėjimo inkaras, o tarpinis sertifikatas yra tik CA kūrimo kataloge, sukelia būtent šį gedimą: laidoje tik lapas, telefone grandinė baigiasi anksti.
Patikrinkite, ką daemonas turi, naudodami swanctl --list-certs swanctl diegime arba ipsec listcerts su senesniu starter. Tarpinis sertifikatas turėtų pasirodyti kaip CA sertifikatas su šaknimi virš jo. Jei jo nėra, jokia kliento parinktis nepadės; jei yra, pereikite prie kito klausimo.
Tada patikrinkite, ar jis bus siunčiamas. swanctl.conf nuoroda dokumentuoja send_cert, kurio numatytoji reikšmė ifasked siunčia sertifikatus tik tada, kai kita pusė paprašė; always siunčia visada. Senasis atitikmuo yra leftsendcert=always faile ipsec.conf. Šis nustatymas valdo siuntimą, o ne prieinamumą, todėl negali kompensuoti tarpinio sertifikato, kurio daemonas niekada neįkėlė.
Jei grandinė trumpa, įkelkite tarpinį sertifikatą ten, kur ieško daemonas
Įdėkite tarpinį sertifikatą į CA katalogą, o ne šalia lapo: /etc/ipsec.d/cacerts ipsec.conf sąrankai, /etc/swanctl/x509ca swanctl, arba kelią, kurį pakeičia jūsų paketas. Įkelkite konfigūraciją iš naujo ir vėl išvardykite sertifikatus. Kai kurios versijos taip pat siunčia paketą, kuriame grandinė yra lapo faile, bet CA katalogas yra perkeliamas sprendimas įvairiose versijose ir paketuose.
Patikrinkite ir iš kliento pusės. Telefonas mato tik tai, ką atnešė mainai, todėl 2 lygio daemono žurnalas turėtų rodyti tarpinį sertifikatą perduotuose sertifikatuose. Jei žurnalas jį rodo, o telefonas vis tiek nepavyksta, esate kitoje lentelės eilutėje, ir tolesnis CA failų koregavimas nepakeis rezultato.
Jei grandinė pilna, nustokite redaguoti sertifikatus
Tapatybės gedimas – tai VPN profilio pavadinimo ir sertifikato pavadinimo neatitikimas. Android lygina sukonfigūruotą serverio tapatybę su sertifikatu, kurį patvirtino, todėl profilis, nukreiptas į adresą, kai sertifikate nurodytas pagrindinio kompiuterio vardas, arba profilis, nurodantis pagrindinio kompiuterio vardą, kurio sertifikatas neapima, nepavyksta po sėkmingo grandinės patvirtinimo. Pataisykite klaidingą pusę ir išlaikykite profilio bei sertifikato suderinimą, kai kuri nors pusė keičiasi.
Algoritmo gedimas pasireiškia su galiojančia grandine ir atitinkančiu pavadinimu. Android versijos skiriasi tuo, kokius raktų tipus ir parašų schemas jos priima, o pats profilio tipas riboja parinktis. Jei šliuzas naudoja senesnį ar neįprastą derinį, palyginkite jį su tuo, ką palaiko įrenginys, prieš manydami, kad sertifikatas sugadintas. Daemono žurnalas parodys, kad rankos paspaudimas juda toliau nei pasitikėjimo atveju, ir tai yra ženklas, kad grandinė nebėra problema.
Neįdiekite tarpinio sertifikato kaip naudotojo šakninio telefone
Trūkstamo tarpinio sertifikato įdiegimas telefone kaip naudotojo sertifikato pašalina įspėjimą ir pakeičia telefono pasitikėjimo modelį kiekvienai programai, kuri priima naudotojo įdiegtas šaknis. Tai taip pat paslepia pristatymo klaidą, kuri paveiks kitą klientą, ir palieka šliuzą siunčiantį nepilną grandinę kiekvienam būsimam įrenginiui. Ilgalaikis sprendimas yra serveryje, vieną kartą, visiems klientams.
Pakeitimų įraše laikykite tris sprendimus atskirai: kurie sertifikatai buvo perduoti, kuri tapatybė buvo lyginama ir kuris algoritmas buvo suderintas. Šliuzas, kuris visada siunčia visą grandinę, profilis, kuris teisingai įvardija sertifikatą, ir raktų tipas, kurį palaiko parkas, yra trys maži faktai, ir jie sudaro visą šį gedimą.