title: How to locally host a WCF service on IIS that will be available to clients over the internet, and configure SSL for it?
body: <p>I have a C# WCF service and client that I wrote so that employees of a business can clock in/out from a client on a mobile device (for now, a netbook). This is tested and works well in development, and now it's time to move it to production.</p>
  
  <p>Production is an HP Proliant ML110 server running Win 2008 R2 x64 at the business's office (which is a home office). Since it's a home office, with just a normal home cable internet connection, I've set up a free no-ip dynamic DNS account and port forwarded so that web traffic goes to this server properly. </p>
  
  <p>From a remote machine, I can access the WSDL for the webservice where it is hosted on IIS on the server, so as an example (not the actual URL) using <a href="http://example.no-ip.org/exampleService/LaborService.svc?wsdl" rel="nofollow">http://example.no-ip.org/exampleService/LaborService.svc?wsdl</a>, I can see the WSDL from a remote machine over the internet.</p>
  
  <p>Now, I need to be able to host this securely using SSL, and need to configure IIS and the webservice endpoint / client properly so that remote clients can authenticate and make webservice calls over the internet to this webservice.</p>
  
  <p>The problem I have is, I don't really know how SSL works (at least I don't know what's required to use it), and I don't know how to configure IIS or the webservice or the client.</p>
  
  <p>By default, the service and client are using wsHttpBinding with Windows authentication.  I think the best thing since this isn't really any highly sensitive data (just employee name, id, refcode / job name, id, refcode / work site id, name, ref code / clock in and out time), would be to have the minimal security necessary to get it to work so I can connect on a remote client.</p>
  
  <p>So right now, I have Windows 2008 with IIS7 and a C# WCF service deployed on it from which I can connect a local client.  What do I have to do to make this available publicly?  I know there's alot of options, but what I think I need is for someone to just give me their opinion on the best way to do this, and instructions or guidance on how to get that done (so please I know it's a broad question with alot of answers, but just pick one solution that you think is best and explain it to me; I'll be forever grateful).</p>
  
  <p>As an example of how ignorant I am of how to deploy a web application; I don't know what is needed to get an SSL certificate, or what to do with it if I had one, or how to configure IIS, the service and the client to use it.  So instructions on how to do those things would be awesome.</p>
  
  <p>Thanks.</p>