0

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

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

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

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

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

4

1 回答 1

0

您可以从两个方面解决这个问题:如果您的 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;
    }
  }
}
于 2013-03-04T16:29:03.373 回答