2016-05-24 14 views
1

私は興味深い問題があります。私たちのチームは、AWSの多数のロードバランサとWebサーバーを管理しています。証明書管理は塊を吹き飛ばしているので、私はtrycorderにモジュールを追加しようとしています。このモジュールは、SSLで保護されたすべてのエンドポイントに当たって証明書の有効期限を確認します。 以下に基づいて例を見つけましたが、信頼できないというエラーで失敗します。私は信頼を気にしない、私はちょうど使用されている証明書をチェックアウトする必要があります。C#でWebサーバー証明書を検証するにはどうすればよいですか?

Based on help recieved, I have gotten this far, but failing because I dont understand how to recover the data from the delegate within the context of the calling function. I need the function to return the certificate. Can this be done? (email code if it is too large to [email protected] Thanks for your help!!!! 

    public X509Certificate2 GetCertificate(string urltocheck) 
    { 
     X509Certificate2 ToReturn = new X509Certificate2(); 
     try 
     { 
      WebRequest request = WebRequest.Create(new Uri(urltocheck)); 
      var gimme = ServicePointManager.ServerCertificateValidationCallback = 
      (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => 
      { 
       ToReturn = new X509Certificate2(certificate); 
       return true; 
      }; 

      ServicePoint svcPoint = ServicePointManager.FindServicePoint(new Uri(urltocheck)); 
      return ToReturn; 
     } 
     catch (Exception ex) { } 
     return ToReturn; 
    } 

ヘルプ?

あなたはすべての証明書を許可する ServicePointManagerを使用することはできません、あなたが certificate引数でそれを点検する機会を持って

答えて

0

ServicePointManager.ServerCertificateValidationCallback = 
       (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => 
       { 
         //do stuff with certificate... 
         return true; 
       }; 

あなたは、このための有効なユースケースを持っているようですね、もちろんあなたはほとんどありません盲目的にすべての証明書だけを信頼したい。

+0

私は前にそれを見ましたが、そのコードでは私がどのように呼び出すのかがわかりません。私の無知のために申し訳ありません。引数としてURLを受け取り、証明書から証明書またはデータを返す関数を探しています。 –

+0

サービスコールを行う前にいつでもそれを実行してください。あなたは一度だけこれを行う必要があるので、ServicePointManagerはバックグラウンドで使用され、常にそのコールバックを実行します。 – Crowcoder

+0

これまで私はそれを見てきましたが、そのコードでは私がどのように呼び出すのかがわかりません。私の無知のために申し訳ありません。引数としてURLを受け取り、証明書から証明書またはデータを返す関数を探しています。証明書を使用して//作業を行うことができましたが、そのコードのデータを戻り値に渡す方法を特定できませんでした。明らかに私はデリゲートに新しい... ....( –

関連する問題