【问题标题】:WCF hosted on IIS 7 cannot verify security of the messageIIS 7 上托管的 WCF 无法验证消息的安全性
【发布时间】:2013-03-04 16:20:18
【问题描述】:

我有一个托管在 IIS 7 上的 WCF 服务,它使用自签名证书来提供 HTTPS 连接。

服务器位于美国,但使用它的客户端位于中东。为了客户能够使用该服务,我必须将服务器的时间和时区更改为客户所在的国家/地区。 此配置有效(现在已经快一年了),但从 2 天前开始,一些客户端停止工作并收到以下错误:

验证消息的安全性时出错。

如果我将服务器时间更改为不工作的客户端前一小时,这些客户端将能够使用该服务,但之前工作的客户端停止工作并收到相同的错误。

有谁知道我该如何解决这个问题。 谢谢

【问题讨论】:

    标签: wcf ssl iis-7 self-signed


    【解决方案1】:

    您可以从两个方面解决这个问题:如果您的 IIS 中安装了 AppFabric 或类似的东西,您可以开始为您的服务编写跟踪文件。这应该可以让您很好地了解什么在服务器端出了问题。

    在客户端,在不接触服务器的情况下,您可能想检查是否可以获得比 .NET 喜欢给出的“安全性不起作用”更具体的错误。尝试编写一个调用您的服务的控制台应用程序并检查那里的 SSL 错误。

    namespace ServiceTestConsole
    {
      using System;
      using System.Net;
      using System.Net.Security;
      using System.Security.Cryptography.X509Certificates;
    
      internal class Program
      {
        internal static void Main()
        {
          ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
    
          // add a service reference and call your service here
    
          Console.WriteLine("Press any key to continue");
          Console.ReadKey();
        }
    
        private static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslpolicyerrors)
        {
          Console.WriteLine("SSL Policy Error(s): " + sslpolicyerrors);
    
          return true;
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-16
      • 2014-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多