如何在WCF中使用SSL加密

时间:2011-05-17 08:14:28

标签: c# wcf visual-studio-2010 ssl

我在本教程中有一个简单的应用程序:WCF 4 Getting Started Tutorial

如何实施某些加密?比如HTTPS(SSL?)。

教程中的示例代码。

static void Main(string[] args)
    {

        // Step 1 of the address configuration procedure: Create a URI to serve as the base address.
        Uri baseAddress = new Uri("http://localhost:8000/ServiceModelSamples/Service");

        // Step 2 of the hosting procedure: Create ServiceHost
        ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);

        try
        {


            // Step 3 of the hosting procedure: Add a service endpoint.
            selfHost.AddServiceEndpoint(
                typeof(ICalculator),
                new WSHttpBinding(),
                "CalculatorService");


            // Step 4 of the hosting procedure: Enable metadata exchange.
            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            selfHost.Description.Behaviors.Add(smb);

            // Step 5 of the hosting procedure: Start (and then stop) the service.
            selfHost.Open();
            Console.WriteLine("The service is ready.");
            Console.WriteLine("Press <ENTER> to terminate service.");
            Console.WriteLine();
            Console.ReadLine();

            // Close the ServiceHostBase to shutdown the service.
            selfHost.Close();
        }
        catch (CommunicationException ce)
        {
            Console.WriteLine("An exception occurred: {0}", ce.Message);
            selfHost.Abort();
        }

    }

2 个答案:

答案 0 :(得分:4)

最简单的方法可能是使用传输安全性。见HTTP Transport Security。它描述了如何为自托管服务和IIS托管服务配置SSL。

如果你需要的只是加密,那就是它。如果您还需要客户端身份验证,则客户端应使用自己的服务必须接受的证书。

答案 1 :(得分:1)

如果您想在IIS7网站上安装https,可以试试这个:

  1. 将启用的协议值“https”更改为网站的高级设置。
  2. 添加绑定https端口号,例如:localhost:81
  3. 将SSL设置添加到您的网站。
  4. 然后使用http://fullyqnameofyourcomputer:81访问您的网站 如果要使用与安全站点的基本绑定来访问WCF服务,只需确保在客户端配置中添加安全模式(Not None)。