Pametna kartica koja već sadrži pravi ključ ipak mora dobiti instrukciju koji objekat na njoj koristiti. OpenConnect u takvoj situaciji ne želi kopirani .key fajl; želi PKCS#11 URI koji imenuje certifikat i, kada automatska pretraga ne može dovršiti posao, privatni ključ pored njega. Nezgodno je to što sintaksno valjan URI ništa ne dokazuje. On mora imenovati upis kojem se pristupnik već pouzdaje, a ne puki objekat koji je kartica spremna otvoriti.

Šta klijent želi umjesto izvezenog ključa

Opcija -c obično prima putanju do fajla, ali kada se vrijednost parsira kao PKCS#11 URI, OpenConnect je tretira kao referencu na objekat unutar tokena, a ne na fajl na disku. Opcija -k ponaša se isto za privatni ključ. Ništa se ne izvozi i ključ nikada ne napušta zaštitu koju kartica pruža. Ono što klijent traži od vas je ime oko kojeg se slažu modul tokena, spremište certifikata i upis na pristupniku.

Na tom posljednjem ograničenju većina pokušaja stane. URI može biti savršeno dobro formiran i ipak odabrati certifikat koji će pristupnik odbiti, jer su valjanost i relevantnost odvojena pitanja. Provjera koja vrijedi jeste poređenje sa zapisom upisa, a ne traženje prvog objekta koji se slučajno otvori.

Dva URI-ja, dva različita posla

URI certifikata odgovara na pitanje koji identitet tražite. Pokazuje na objekat certifikata čiji se javni ključ i red subjekta poklapaju s profilom računa ili uređaja koji je izdao VPN administrator. Isti certifikat obično dolazi s objektom privatnog ključa pohranjenim uz njega, a upravo taj par treba TLS rukovanju.

URI ključa odgovara na pitanje gdje se nalazi odgovarajući privatni materijal kada OpenConnect ne može to zaključiti. Uz samo postavljen -c, klijent gradi pretragu ključa iz svojstava certifikata; navođenje -k zamjenjuje nagađanje izričitom referencom na objekat. PIN tokena je treći, nepovezan unos: otključava karticu za radnju i nikada ne identificira objekat.

openconnect --protocol=anyconnect \
  -c 'pkcs11:model=PKCS%2315%20emulated;manufacturer=piv_II;serial=1a2b3c4d;id=%01' \
  vpn.example.net

Sve u tom citiranom nizu su podaci. Tačke sa zapetom razdvajaju atribute URI-ja, a procentni escape-ovi kodiraju znakove koji bi inače pokvarili parsiranje, pa cijeli argument mora netaknut preživjeti ljusku.

Pronalaženje URI-ja koji odgovara vašem upisu

GnuTLS isporučuje p11tool, koji navodi šta trenutni korisnik zaista može dosegnuti preko p11-kit. Počnite s p11tool --list-tokens, zatim navedite objekte certifikata na tokenu koji vas zanima. Dodajte --login kada se objekti pojave tek nakon PIN-a i uporedite subjekta i izdavaoca sa zapisom upisa umjesto da odaberete ono što se pojavi prvo.

Ako se token uopće ne pojavi, problem je ispod OpenConnecta: p11-kit nema registriran modul za taj middleware ili je modul registriran za drugi račun. Sistemska registracija nalazi se pod /etc/pkcs11/modules, a direktorij po korisniku može držati isto bez diranja sistemske kopije. Provjerite da putanja pružaoca u datoteci modula pokazuje na biblioteku koju je softver čitača zaista instalirao.

Kada kopirate URI iz popisa, zadržite navodnike oko njega. Navodnicima neuokvirene tačke sa zapetom skraćuju argument na prvom atributu i klijent tada prijavi objekat koji ne može pronaći.

Kada automatska pretraga ključa odustane

OpenConnect može izvesti pretragu ključa iz URI-ja certifikata, ali tačno podudaranje koje obavlja zavisi od verzije, a obrada tipa objekta i oznake mijenjala se s vremenom. Savjet da skraćujete URI dok ne proradi opisuje staru zaobilaznu mjeru, a ne zahtjev. Ako izvedena pretraga ne uspije, imenujte ključ izričito s -k umjesto da URI certifikata pretvarate u nešto nejasnije.

Potvrdite da ključ postoji i da je vidljiv pomoću p11tool --list-keys prije nego optužite klijenta. Zatim provjerite je li objekat označen kao upotrebljiv za potpisivanje ili dešifriranje, jer ključ generiran s pogrešnim atributima ne može dovršiti rukovanje bez obzira na to koliko je URI ispravan. Ne prenosite serijaliziranu vrijednost pkcs11-id iz OpenVPN profila u OpenConnect opciju; dva klijenta koriste različite formate identifikatora čak i kada razgovaraju s istom karticom.

Ako se URI razriješi i PIN prihvati, ali autentifikacija i dalje ne uspijeva, prestanite podešavati URI. Pročitajte vlastitu grešku pristupnika, jer sljedeći neuspjeh je iznad tokena.

Kvarovi koji samo izgledaju kao problemi s URI-jem

Pristupnik koji govori drugi protokol neće uspjeti isto bez obzira na to je li vaš URI ispravan ili pogrešan. OpenConnect je zamijenio zastarjeli vpnc klijent s razlogom, a podrška za kartice ne čini nekompatibilan protokol pristupnika kompatibilnim. Potvrdite očekivani protokol servera i raspored autentifikacije prije nego potrošite još jedan sat na atribute objekta.

Provjera identiteta servera je također odvojen sloj. Klijent provjerava certifikat pristupnika prema svom spremištu povjerenja, a ta provjera ide nakon što je kartica već odradila svoj dio. Dozvole čitača i zaustavljena usluga pcscd daju isti vanjski simptom, nečitljiv token, uz mnogo jednostavnije rješenje.

Radite od objekta prema van: vidi li p11tool token, vidi li certifikat i ključ, prihvata li OpenConnect URI, i tek onda pitajte prihvata li pristupnik identitet. Svaki korak ima vlastitu poruku o grešci i svaki je jeftiniji za testiranje od sljedećeg.

Povezani članci