CryptographicException: Keyset does not exist

Korábban CardSpace használatakor futottam bele a fenti hibaüzenetbe, most egy IIS-ben hosztolt WCF szolgáltatás készítésekor jött elő. Elvesztettem volna a kulcsaimat? A problémát az okozza, hogy a web.config fájlban szerepel egy tanúsítvány hivatkozás a <serviceCertificate> ágban, de az IIS worker process felhasználói fiókjának, alapértelmezés szerint a Network Service fióknak, nincs joga hozzáférni a tanúsítványhoz. De hogy adok egy tanúsítványra olvasási jogot?

A CardSpace esetén bemutatott megoldás persze most is működik: letöltjük a Web Services Enhancements (WSE) 3.0-t és a WseCertificate3.exe segítségével Read jogot adunk a felhasználónak.

Ha nincs kéznél WSE, akkor használhatjuk a WCF példák között elérhető Find Private Key Toolt (letölthető innen is). Listázhatjuk vele az egyes tanúsítványtárakban lévő tanúsítványokat. Legegyszerűbben így:

FindPrivateKey.exe My LocalMachine

Erre megkapjuk ezt:

Select Certificate ablak

A tanúsítvány kiválasztása után kattintsunk az OK gombra és máris megtudjuk, hol lakik a tanúsítvány:

FindPrivateKey.exe eredmény

Nincs más dolgunk, mint elnavigálni a megadott C:ProgramDataMicrosoftCryptoRSAMachineKeys mappába és a megadott 0a38f98… nevű fájl tulajdonságlapján a Network Service felhasználónak Read jogot adni. Nem kell több, elég a Read!

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s