Mitä VPN-asiakasohjelmasi tarkistaa ennen kuin se luottaa varmenteeseen
Vie varoitus varmenteesta asiakasohjelmasi tarkistamien neljän portin läpi: CA-luottamus, ketjun rakentaminen, vastapuolen nimi ja käyttötarkoitus sekä mitätöintikäytäntö.
VPN-asiakasohjelmasi ilmoittaa, ettei varmennetta voitu vahvistaa, ja valintaikkuna pysähtyy siihen. Tiedosto on paikallaan, palvelin on käynnissä, ja sama profiili toimi toisella kannettavalla viime kuussa. Tuon yhden rivin varoituksen alla asiakasohjelma ajoi vastapuolen varmenteen neljän portin läpi: määrittämäsi varmentaja takaa allekirjoituspolun, polku saavuttaa varmentajan, vastapuolen nimi on pyytämäsi, ja varmenne on nyt käytettävissä tähän tarkoitukseen. Etsi portti, joka sulkeutui, ja korjaus on yleensä yksi tiedosto; ohita se vaihe, niin tuot paketit uudelleen koko iltapäivän.
Lue valintaikkuna ennen kuin muokkaat profiilia
Varmennevirheiden sanamuodon antaa alla oleva kirjasto, ei asentamasi VPN-tuote, joten tarkka merkkijono on ensimmäinen todisteesi. «Paikallisen myöntäjän varmennetta ei saada» osoittaa polkuun tai luottamuksen ankkuriin. «Varmenne on vanhentunut tai ei ole vielä voimassa» osoittaa aikaan. «Varmenteen käyttötarkoitusta ei tueta» osoittaa laajennettuun avaimen käyttöön. Nimen epäsopivuus kertoo, mitä nimeä se halusi. Mitään neljästä ei korjata asentamalla asiakasohjelma uudelleen.
Nosta lokitasoa ennen kuin muutat mitään. OpenVPN ilmoittaa vahvistuksen epäonnistumisesta kättelyn ympärillä, kun ajat sen valitsimella --verb 4, ja strongSwan kirjaa identiteetti- ja ketjupäätöksensä charon-lokiin. Vahvista sitten, mitä varmennetta tutkit, sillä ihmiset testaavat rutiininomaisesti levyllä olevaa tiedostoa, kun profiili upottaa vanhemman kopion. Kun profiili upottaa PEM-lohkoja, testattu varmenne on upotettu varmenne.
Varmentaja allekirjoittaa identiteettejä, ei käyttöoikeuksia
Varmentajalla on nimi ja allekirjoitusavain. Se myöntää varmenteita, jotka sitovat julkisen avaimen tuohon nimeen oman käytäntönsä mukaisesti, mukana voimassaoloikkuna ja käyttörajoitukset. Asiakasohjelmasi tarvitsee myöntäjän tunnistamiseen vain varmentajan varmenteen; se ei koskaan tarvitse allekirjoitusavainta, ja tuon avaimen lähettäminen asiakkaille antaisi niille kyvyn luoda minkä tahansa identiteetin, johon käyttöönotto luottaa.
Varmentajaan luottaminen tekee jokaisesta sen allekirjoittamasta varmenteesta ehdokkaan, ei oikeaa vastapuolta. Saman sisäisen CA:n verkkopalvelinvarmente on myös ehdokas. Siksi nimi- ja käyttötarkoitusportit ovat olemassa, ja siksi vaarantunut CA-avain on tärkeämpi kuin yksikään palvelin: se saavuttaa jokaisen identiteetin, jonka varmentaja on koskaan myöntänyt. Jaa asiakasvarmenteet laitekohtaisesti, jotta kadonnut kannettava on yksi mitätöinti eikä koko käyttöönoton avainten uusinta.
Rakenna polku uudelleen, jota asiakasohjelma yrittää rakentaa
Polku kulkee vastapuolen varmenteesta nollan tai useamman välivarmenteen kautta luottamusvarastosi juureen. Puuttuva välivarmenne on yleisin ketjuvika, ja asiakkaan puolelta se näyttää samalta kuin epäluotettu juuri. Lue ensin lehti ja anna sitten OpenSSL:n rakentaa polku materiaalista, jonka aiot lähettää.
openssl x509 -in server.crt -noout -subject -issuer -dates
openssl verify -CAfile root.crt -untrusted intermediate.crt server.crt
openssl verify -show_chain -CAfile root.crt -untrusted intermediate.crt server.crt
Poistumistila nolla tarkoittaa, että polku rakennettiin noista tiedostoista; epäonnistuminen nimeää varmenteen, johon ei päästy. Jos openssl verify onnistuu, mutta asiakasohjelma yhä kieltäytyy, ero on siinä, mitä palvelin todella lähettää, tai siinä, minkä luottamustiedoston profiili lataa. OpenVPN:ssä välivarmenteet voivat kulkea palvelimen varmennetiedoston mukana tai tulla erikseen valitsimella --extra-certs, ja paketti, jossa on kaksi saman subjektin nimen alle kirjoitettua juurta, lähettää yhden asiakkaistasi väärään haaraan.
Nimi ja käyttötarkoitus ovat erilliset portit
Ketjun rakentaminen ei koskaan kysy, onko nimi sinun. OpenVPN tarkistaa sen vain, kun profiili asettaa valitsimen --verify-x509-name, ja vanha tapa sovittaa pelkkä yleisnimi rikkoutuu varmenteissa, joiden identiteetit elävät subjectAltNamessa. IKEv2-käyttöönotot sovittavat määritetyn identiteetin SAN-merkintöihin tai erottuvaan nimeen asiakasohjelmasta riippuen, ja jokerimerkki- tai %any-arvo kytkee hiljaa pois vertailun, jonka luulit omaavasi.
Seuraavaksi tulevat aika ja käyttötarkoitus. Kannettava, jonka kello käy pari tuntia edellä, hylkää varmenteen, joka ei ole vielä voimassa, ja vanhentunut välivarmenne kaataa polun, vaikka lehti on voimassa. Käyttötarkoituksen viat tulevat varmenteesta, jossa ei ole serverAuthia laajennetussa avaimen käytössä, tai jonka keyUsage ei salli kättelyn allekirjoitusta, minkä OpenSSL ilmoittaa tukemattomana varmenteen käyttötarkoituksena. Myönnä uudelleen oikeasta mallista; mikään tuossa viestissä ei ole syy kytkeä vahvistusta pois.
Mitätöinti toimii vain, jos joku on määrittänyt sen
CRL:ää tai OCSP-vastausta ei kysytä automaattisesti. OpenVPN-palvelimella asiakasvarmenteet tarkistetaan listaa vasten vain, kun --crl-verify osoittaa sellaiseen. Palvelimen varmenteen asiakaspuolen tarkistus riippuu toteutuksesta ja puuttuu usein. strongSwan tarvitsee mitätöintilisäosansa ja käytännön ennen kuin se katsoo CRL:ää vastapuolelle.
Tämä selittää lipun, jonka lopulta saat: mitätöity asiakasvarmenne yhdistää yhä, ja kaikki päättelevät, että mitätöinti on rikki. Mikään ei tarkistanut. Julkaise ja päivitä CRL tai pidä asiakasvarmenteet niin lyhytikäisinä, että vanhentunut mitätöinti merkitsee hetken, ja harjoittele mitätöintipolku laboratoriovarmenteella ennen kuin tarvitset sitä häiriön aikana.
Korjausjärjestys, joka pitää vahvistuksen päällä
Järjestä oireen mukaan ennen kuin kosket tiedostoihin, sillä jokainen taulukon rivi lähettää sinut eri objektiin.
| Client says | Most likely gate | First check |
|---|---|---|
| unable to get local issuer certificate | trust anchor or missing intermediate | your own openssl verify against the files the profile loads |
| expired or not yet valid | validity window | leaf and intermediate dates against the device clock |
| unsupported certificate purpose | extended key usage | serverAuth present, keyUsage allows the handshake |
| name mismatch | peer identity | subjectAltName entries versus the profile name |
Käy lista läpi yhdellä kertaa: vahvista tiedosto, jonka profiili lataa, rakenna polku itse, tarkista että palvelin lähettää välivarmenteen, vertaa kelloa, lue SAN, lue EKU, yhdistä sitten uudelleen ja katso saman lokirivin katoavan. Jos laitteelle ei voida antaa lainkaan CA:ta, kiinnitys on rehellinen vaihtoehto, sillä OpenVPN 2.6 hyväksyy valitsimen --peer-fingerprint ja kaventaa luottamuksen yhteen avaimeen sen sijaan, että tarkistus poistettaisiin. RFC 5280 on lähde sille, mitä kukin noista kentistä tarkoittaa.