我有一个托管在 IIS 7 上的 WCF 服务,它使用自签名证书来提供 HTTPS 连接。
服务器位于美国,但使用它的客户端位于中东。为了客户能够使用该服务,我必须将服务器的时间和时区更改为客户所在的国家/地区。此配置有效(现在已经快一年了),但从 2 天前开始,一些客户端停止工作并出现以下错误:
验证消息的安全性时出错。
如果我在不工作的客户端之前将服务器时间更改为一小时,这些客户端将能够使用该服务,但以前工作的客户端停止工作并收到相同的错误。
有谁知道我该如何解决这个问题。谢谢
我有一个托管在 IIS 7 上的 WCF 服务,它使用自签名证书来提供 HTTPS 连接。
服务器位于美国,但使用它的客户端位于中东。为了客户能够使用该服务,我必须将服务器的时间和时区更改为客户所在的国家/地区。此配置有效(现在已经快一年了),但从 2 天前开始,一些客户端停止工作并出现以下错误:
验证消息的安全性时出错。
如果我在不工作的客户端之前将服务器时间更改为一小时,这些客户端将能够使用该服务,但以前工作的客户端停止工作并收到相同的错误。
有谁知道我该如何解决这个问题。谢谢
您可以从两个方面解决这个问题:如果您的 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;
}
}
}