Friday, February 19, 2010

Keyset does not exist - fejl ved WCF signering

For klientcertifikater til signering, er det nødvendigt, at den konto som kører processen har adgang til certifikatets privatnøgle, ellers vil man få en ”keyset does not exist”-fejl.

Hvis processens konto ikke er den samme, som installerede certifikatet, skal der gives rettighed til certifikatets privatnøgle.

Dette kan ske vha. MMC certificates snap-in på Windows Server 2008 (højreklik på det aktuelle certifikat og vælg all tasks --> Manage Private Keys):


Eller fra commandline vha toolet winhttpcertcfg.exe. Toolet kan downloades her:

http://www.microsoft.com/downloads/details.aspx?familyid=c42e27ac-3409-40e9-8667-c748e422833f&displaylang=en

Efter installation ligger toolet typisk her:

C:\Program Files (x86)\Windows Resource Kits\Tools

Husk at køre toolet som administrator.

Du kan med winhttpcertcfg.exe fx se hvilke konti der har adgang til certifikatets privatnøgle således:

winhttpcertcfg -l -c [certifikat store] -s [del af subject name]

Certifikat store er typisk LOCAL_MACHINE\My

Den der har installeret certifikatet kan som administrator give andre adgang til privatnøglen således:

winhttpcertcfg.exe -g -c [certifikat store] -s [del af subject name] -a [account]