2016-10-14 8 views
0

IIS 7.5で.NET MVC3サービスを実行し、.NET Framework 4.5を使用して、サブパスの1つにクライアント証明書。そのサブパスのために私は自己署名入りクライアント証明書を使用してASP.NET MVC3サービスへの呼び出しを認証できません

public class CheckCertAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(
     ActionExecutingContext filterContext) 
    { 
     filterContext.HttpContext.Response.Headers.Add(
      "CheckCertAttribute", "entered"); 
     var cert = filterContext.HttpContext.Request.ClientCertificate; 
     // check the cert here, optionally return HTTP 403 
    } 
} 
最初 OnActionExecuting()が呼び出されている

が、Certificateがnullの要求クライアント証明書にアクセスすることになり、特別に細工された属性で標識されているとコントローラを細工しました。

<location path="PathOfInterest"> 
<system.webServer> 
    <security> 
    <access sslFlags="SslNegotiateCert"/> 
    </security> 
</system.webServer> 
</location> 

Iこれを行うと、クライアントは常にHTTP 403を受信しないと属性がもはや呼び出されます。私は、web.configファイルでSslNegotiateCertを有効にする必要が判明しました。

クライアント証明書は自己署名され、.pfx(秘密鍵付き)としてエクスポートされるので、問題がサーバ側に到着するとサーバはそれを好きでなく受け入れてパスすることを拒否することになると思いますスルー。クライアント側はHttpWebRequest使用しています:

var cert = new X509Certificate2(pathToPfx, password); 
var request = (HttpWebRequest)WebRequest.Create("https://my.company.com/PathOfInterest"); 
request.ClientCertificates.Add(cert); 
request.GetResponse(); 

私はすでに前にこのアプローチを使用しましたし、それが働きました。最初のケースは、クライアント証明書が自己署名されていないものの、中間証明書によって署名された信頼されたルート機関によって署名されたものでした。この場合、私のサービスは非常に似ています。 2番目のケースでは、自己署名付きクライアント証明書を使用してAzure管理サービスの呼び出しを行っていましたが、この場合、サーバー側の設定方法はわかりません。

したがって、証明書が自己署名しているため、「動作しない」という結論に達しました。私は何か余分なことをしています - おそらくweb.configに何かを追加するか、サーバー側の証明書ストアに証明書を追加してください。私はこれが何であるべきか分かりません。

このセットアップを行うにはどうすればよいですか?

答えて

0

IISは、クライアントと相互に信頼できる接続を「ネゴシエート」しようとします。クライアント証明書は自己署名されているため、信頼を拒否します。

あなたのオプション:

  1. はよく知られている認証局によって発行された証明書を使用してください。これはうまくいくでしょうが、証明書は毎年再発行する必要があります。
  2. 独自のCAインフラストラクチャを実行し、ルートCA証明書をサービスマシンの「信頼できるルート」証明書ストアに追加し、そのルートで署名された証明書を発行します(中間証明書による可能性があります)。
  3. サービスマシンの「信頼できるルート」に自己署名証明書を追加します。 This may induce subtle yet serious security risks。私は個人的にこのオプションに反対しています。なぜなら、それは本当に危険だと感じているからです。
  4. クライアント証明書を使用しない他の認証方式に切り替えます。
関連する問題