views:

946

answers:

2

I am using a certificate with my WCF service so have an encoded value in the web.Config

<identity>
  <certificate encodedValue="large string!!!!!!!" />
</identity>

The value was generated by Visual studio in development using my test certificate.

Now I am deploying I want to get the encoded value for the certificate maintained by the third part who manage the server.

I know that using the svcutil.exe tool as follows will give me this.

svcutil.exe http://servicename.svc

What I want to know is

  1. Is this the recommended approach
  2. Are there any either ways to do this that I'm missing

EDIT: Visual Studio isn't available and I cant move the certificate so it will have to be a non VS solution

A: 

If it's managed by a 3rd party then the server certificate is going to be loaded into the Windows certificate store and selected as part of the service behaviour

In the service behaviour you can select the certificate it uses on the endpoint by

<behaviors>
  <serviceBehaviors>
    <behavior name="MyServiceBehavior">
      <serviceCredentials>
        <serviceCertificate findValue="CN=myhost.mydomain.org" />
      </serviceCredentials>
    </behavior>
  </serviceBehaviors>
</behaviors>

The element is used for a connecting client. Simply refresh the service reference for the proxy in the client solution and the identity element should be updated with an encoded value version of the public parts of the new certificate.

blowdart
I should have said visual studio wont be available.
AJM
Oh. Well you could recreate the proxy on a machine with VS available and then use the entry from that config. Or is the hosted machine not visual to the outside world?
blowdart
Its the later im afraid!!
AJM
+3  A: 

This can be done by exporting the certificate (via IIS or Certificate Snap In) to a .cer file without the private key in base64 form, then opening in notepad and copying and pasting this into encodedValue

AJM