0

HTTPS 接続を提供するために自己署名証明書を使用する IIS 7 でホストされている WCF サービスがあります。

サーバーは米国にありますが、それを消費するクライアントは中東にあります. クライアントがサービスを使用できるようにするには、サーバーの時間とタイムゾーンをクライアントの国に変更する必要がありました。この構成は (ほぼ 1 年間) 機能していましたが、2 日前から一部のクライアントが機能しなくなり、次のエラーが発生します。

メッセージのセキュリティを確認中にエラーが発生しました。

サーバー時間を、動作していないクライアントの 1 時間前に変更すると、これらのクライアントはサービスを使用できますが、以前に動作していたクライアントは動作を停止し、同じエラーが発生します。

この問題を解決する方法を知っている人はいますか。ありがとう

4

1 に答える 1

0

これに取り組むことができる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;
    }
  }
}
于 2013-03-04T16:29:03.373 に答える