2

Web サービスへのアクセス制御について数日前に投稿しました ( Web サービスへのアクセス制御)。つまり、ASP.NET Web サービスを//service/webserviceにデプロイしており、 //web1上の ASP.NET Web アプリケーション (app1)が証明書認証を使用して Web サービスにアクセスできるようにしたいと考えています。System.Net.WebException: The request failed with HTTP status 403: Forbidden exceptionが発生し続けます。以下は私のセットアップです:

証明書のエクスポートについて。

  • //serviceに発行されたサーバー証明書を LocalMachine ストアからエクスポートし、service.cer として保存しました。
  • また、LocalMachine ストアから//web1に発行されたクライアント証明書をエクスポートし、 web1.cer として保存しました。

//service/webserviceのセットアップ:

  • ディレクトリ セキュリティで、匿名アクセスとすべての認証アクセス (統合 Windows アクセス、ダイジェスト認証、および基本認証) のチェックを外しました。
  • セキュリティで保護された通信で、セキュリティで保護されたチャネル (SSL) が必要、128 ビットの暗号化が必要、クライアント証明書が必要、およびクライアント証明書マッピングを有効にするにチェックを入れました。次に、web1.cer を//service/webserviceへのアクセス権を持つAD アカウントMyDomain/userにマッピングしました。
  • //service/webservice/WebService.asmxの場合、 <authentication mode="Windows" />web.configで設定

//web1/app1でのセットアップ

  • <authentication mode="Windows" /><identity impersonate="true" />web.config を設定
  • VS2008 では、//service/webservice/WebService.asmx への Web 参照を追加し、WServiceという名前を付けました。
  • //web1/app1/default.aspx.csで、私はこれを持っていました:

using System.Security.Cryptography.X509Certificates;
    using System.Net;
        WService.WebService ws = new WService.WebService();
        ServicePointManager.ServerCertificateValidationCallback = delegate(Object sender1, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors errors) { return true; };
//I was a bit confused here on which certificate I should use so I have tried both service.cer and web1.cer but still got the same error
        X509Certificate x509 = X509Certificate.CreateFromCertFile(@"C:\Certificates\service.cer"); 
        ws.ClientCertificates.Add(x509);
        ws.DoSomething();
  • WinHttpCertCfg.exe を実行して、ASPNET アカウントの LocalMachine の両方の証明書へのアクセスを許可しました

https://service/webservice/WebService.asmxにアクセスすると、クライアント証明書を提供するように求められました。しかし、https://web1/app1/default.aspx (Web サービスを呼び出す) にアクセスすると、HTTP ステータス 403 例外が発生します。

私は何を取りこぼしたか?問題は、//web1/app1/default.aspx.csが証明書の送信に失敗したためだと思います。それが問題なら、どうすればいいですか?VS 2008 と ASP.NET 3.5 で asmx と aspx の両方をビルドしました。

4

4 に答える 4

2

SSL証明書がWebサービスクライアントの認証に失敗しているようです。クライアントのマシンからサービスにアクセスし、ブラウザでSSL証明書に関するアラートを受け取った場合、サービスは証明書で認証されません(証明書は信頼されていません)。証明書が機能しないわけではなく、信頼されていないだけです。

サービスが複数のマシンにまたがっている場合は、認証局を設定し(これは、 http://www.petri.co.il/install_windows_server_2003_ca.htmに役立つ場合があります)、クライアントマシンに信頼できる発行元として追加する必要がある場合があります。これはhttp://support.microsoft.com/kb/901183にも役立つ可能性があります。

もう1つのオプションは、SSLを検証しないことです。http: //geekswithblogs.net/jwhitehorn/archive/2006/09/20/91657.aspxを参照してください。

于 2009-01-04T00:54:21.673 に答える
2

クライアント証明書が「クライアント認証」の「コンピュータ」テンプレート証明書として要求されていることを確認してください。そうでない場合は機能しません。

于 2009-04-23T18:54:03.450 に答える
1

この問題が発生したとき、使用していたクライアント証明書/キー ペアが、ローカル マシン ストアではなく現在のユーザー ストアにある中間 CA によって署名されていたことが判明しました。ログイン中に証明書を調べた場合は問題ないように見えましたが、IIS ワーカー プロセスは中間 CA を認識できませんでした。したがって、Web サービス呼び出しは、要求で証明書を提供していませんでした。403 7 5これは、サーバーの Web ログで応答を確認することで確認できます。

于 2014-04-25T13:17:03.063 に答える
0

偽装しているユーザーが、使用されている証明書ストアにアクセスできることを確認してください。

于 2011-09-18T23:03:18.543 に答える