7

特定のドメイン名の SSL 証明書からデータを取得しようとしています。たとえば、「http://stackoverflow.com」などの任意の Web サイト アドレスを入力すると、コードは最初に SSL 証明書が存在するかどうかを確認します。もしそうなら、証明書の有効期限を引き出してほしい。[ DB からドメイン名を読んでいます] 例 : http://www.digicert.com/help/

有効期限を確認する Web サービスを作成する必要があります。どうすれば実装できますか?? - RequestCertificateValidationCallback や ClientCertificates など、さまざまなことを調べました。これは初めてなので、何をしなければならないかわかりません。

私は完全に間違っている可能性があります (したがって、なぜ助けが必要なのですか) が、HTTPWebRequest を作成してから、クライアント証明書と特定の要素をそのように要求しますか?

@SSL certificate pre-fetch .NET で提供された例を試しましたが、forbitten 403 エラーが発生しています。

どんな助けでも大歓迎です-ありがとう。

これは、403 禁止エラーをスローしている私が書いたコードです。

        Uri u = new Uri("http://services.efi.com/");
        ServicePoint sp = ServicePointManager.FindServicePoint(u);

        string groupName = Guid.NewGuid().ToString();
        HttpWebRequest req = HttpWebRequest.Create(u) as HttpWebRequest;
        req.Accept = "*/*";
        req.ConnectionGroupName = groupName;

        using (WebResponse resp = req.GetResponse())
        {
            // Ignore response, and close the response.
        }
        sp.CloseConnectionGroup(groupName);

        // Implement favourite null check pattern here on sp.Certificate
        string expiryDate = sp.Certificate.GetExpirationDateString();

        string str = expiryDate;
4

3 に答える 3

6

これはうまくいきます:

namespace ConsoleApplication1
{
  using System;
  using System.Net;
  using System.Net.Security;
  using System.Security.Cryptography.X509Certificates;

  class Program
  {
    static void Main()
    {
      ServicePointManager.ServerCertificateValidationCallback += ServerCertificateValidationCallback;

      var request = WebRequest.Create("https://www.google.com");

      var response = request.GetResponse();

      Console.WriteLine("Done.");
      Console.ReadLine();

    }

    private static bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
      Console.WriteLine("Certificate expires on " + certificate.GetExpirationDateString());

      return true;
    }
  }
}
于 2013-03-11T09:56:10.007 に答える
1

そのページにアクセスしたときにサーバーが返すものであるため、「403 禁止」ステータスを取得しています。IE を使用してその Uri を参照すると、同じことがわかります。このステータスは、Url にアクセスする権限がないことを示しているため、アクセスできるページでコードを試す必要があります。

また、http接続で証明書が表示される可能性はほとんどありませんhttps。代わりに試してみることをお勧めします。

于 2013-03-11T10:17:35.180 に答える