When you query the WSDL of a WCF service that is hosted with HTTPS the location of the service will be pointed to the machine name by default. So if a client is querying your service by pointing to https://www.yourdomain.com/YourService/Service.svc?wsdl the WSDL will come back with something like this:

<wsdl:service name="ServiceName">
    <wsdl:port name="HttpService" binding="tns:HttpService">
        <soap12:address location="https://MachineName/YourService/Service.svc" /> 
        <wsa10:EndpointReference>
            <wsa10:Address>https://MachineName/YourService/Service.svc</wsa10:Address> 
        </wsa10:EndpointReference>
    </wsdl:port>
</wsdl:service>

Therefore the client machine will not be able to generate the appropriate proxy because it will never be able to query the service using the MachineName (it is most likely sitting outside of the server's internal network).

To fix this all you have to do is add an HTTPS Host Header to the correct website. Unfortunately, this is not doable through the GUI, but it can be done in command line. To do so in IIS 6.0 run the following script by replacing the <website id> with your website id (usually it is 1) and <host header> with your fully qualified domain:

%systemroot%\system32\cscript.exe //nologo %systemdrive%inetpub\adminscripts\adsutil.vbs set /w3svc/<website id>/SecureBindings ":443:<host header>"

After that just reset iis by running an iisreset.

If you browse to your wsdl file you should find that the address changed to the fully qualified domain.

Happy Configuring!