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:
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:
Nincs más dolgunk, mint elnavigálni a megadott C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys 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!