2010-12-20 2 views
7

私は、宣言的な方法で証明書の検証を無効にする方法を探しています。 これはsvcutil.exeを使用するときに非常に便利です。宣言.configファイル*からServicePointManagerのServerCertificateValidationCallbackプロパティを設定する方法はありますか?

これまでのところ私は、ホスト名の検証を無効にする方法を知っている:

<system.net> 
    <settings> 
     <servicePointManager checkCertificateName="false" /> 
    </settings> 
</system.net> 

をが、これはsufficentではありません。 私はこれを主張している誰かが行うことができます見られますが、いずれのサンプルwihtoutてきました。

<system.net> 
    <webRequestModules xdt:Transform="Insert"> 
     <clear/> 
     <add prefix = "http" type = "HttpRequestCreatorWithServerCertificateValidationCallback, TestHelpers"/> 
     <add prefix = "https" type = "HttpRequestCreatorWithServerCertificateValidationCallback, TestHelpers"/> 
    </webRequestModules> 
</system.net> 

HttpRequestCreatorWithServerCertificateValidationCallback.cs

public class HttpRequestCreatorWithServerCertificateValidationCallback : IWebRequestCreate 
{ 
    static HttpRequestCreatorWithServerCertificateValidationCallback() 
    { 
     var type = typeof(HttpWebRequest).Assembly.GetType("System.Net.HttpRequestCreator"); 
     var ctor = type.GetConstructors()[0]; 
     Creator = (IWebRequestCreate)ctor.Invoke(null); 

     ServicePointManager.ServerCertificateValidationCallback += delegate 
     { 
      return true; 
     }; 
    } 

    #region IWebRequestCreate Members 

    public WebRequest Create(Uri uri) 
    { 
     return Creator.Create(uri); 
    } 

    #endregion 

    private static readonly IWebRequestCreate Creator; 
} 
+0

ない、宣言していますが、フィドラーは、証明書の検証の問題を回避してsvcutilだます使用することができます:) –

答えて

0
System.Net.ServicePointManager.ServerCertificateValidationCallback = 
       ((sender, certificate, chain, sslPolicyErrors) => true); 
+0

はい、私はこのことについて知っているが、それは、宣言ではありません。 –

4

私はユニットテスト:(

のapp.configでのみ使用するため、この醜いハックを使用していますHttpClientをして作業する場合:

<system.net> 
    <settings> 
     <servicePointManager 
      checkCertificateName="false" 
      checkCertificateRevocationList="false" /> 
    </settings> 
    </system.net> 

私はどこから覚えていない、インターネットからそれを取りました。 私のバックエンドコールで動作します。

1

私が使用していますこの:

関連する問題