WCF obtaining certificate encoded value
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.
What I want to know is
- Is this the recommended approach
- 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
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
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.