tags:

views:

160

answers:

1

I am working on an application which accesses a x.509 certificate from the current user store. This works fine when the application is run as an executable.

However, when I try running the app as a windows service, it fails to find the certificate. I tried changing the LogOn property for the windowsservice console to set the right user, but that did not help.

Is there any way I can access the particular user's (Administrator) certificate store? I am bound to use the certificate in the user store - else I can easily use the local machine store.

Any help will be appreciated.

I am using this particular piece of code to retrieve certificate:

                        serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "My-CertificateName");

This works fine when running as an executable - but fails to find a certificate when running as a windows service

+1  A: 

When I've run into problems like this in the past it's had to do with user permissions, although if you have set your service to run as Administrator, and running the app as an exe as Administrator works then I'm a bit skeptical.

That said, try these two links to start - they're written from a WCF point of view, but easily apply to any type of service:

Working with Certificates

How to: Make X.509 Certificates Accessible to WCF

If neither of those help, please edit your question to include the code that you are using to access the x.509 cert.

Andrew Anderson
I went through the two articles - but could not really find where things are going wrong on my end - setting certificate is simple, and i have edited my question to convey thatThanks
Xeel