1

パブリックWebサービスを利用するシステムを作成しています。VS2008と従来の.NETFramework2.0Webサービステクノロジを使用してWebサービスを利用しています。私の問題は、Webサービスを消費したり、その操作を呼び出したりすることではありません。

問題は、署名された操作から応答が返されると、生成されたプロキシが署名の検証を開始することです。そのとき、WSE3003エラーが発生します。私は(私が思うに)サービス証明書をLocalComputer / TrustedPeople証明書ストレージにロードしました。その証明書パスを見ると、すべて問題がないことがわかります。

VeriSignクラス3パブリックプライマリ
     CAwww.verisign.com/CPSIncorp.byRef。LIABILITY LTD。(c)97 ...
          servcert.there.com

しかし、私は次の例外を受け取り続けます:

Microsoft.Web.Services3.ResponseProcessingException:WSE910:応答メッセージの処理中にエラーが発生しました。エラーは内部例外で確認できます。応答メッセージは、Responseプロパティにもあります。---> Microsoft.Web.Services3.Security.SecurityFault:セキュリティトークンを認証または承認できませんでした---> System.Security.SecurityException: WSE3003:証明書の信頼チェーン を検証できませんでした。 証明書がTrustedPeopleCertificateストアに正しくインストールされているかどうかを確認してください。または、これがテスト証明書である場合は、allowTestRoot構成セクションをtrueに設定することをお勧めします。

次のコードはおそらくコンパイルされず、機密性の高いもののいくつかを削除しましたが、これが私の役割の背後にある考え方です:

// Construct the wse proxy
MyServiceWse wsClient = new MyServiceWse();

// Assign the credentials
UsernameToken userToken = new UsernameToken("user", "pass", PasswordOption.SendPlainText);
wsClient.SetClientCredential(userToken);
wsClient.RequestSoapContext.IdentityToken = userToken;

// Find the client and service certificates
X509Certificate2 clientCert = MyCertificateManager.FindCertificate(StoreLocation.LocalMachine, StoreName.TrustedPeople, "mycert.here.com");
X509Certificate2 serviceCert = MyCertificateManager.FindCertificate(StoreLocation.LocalMachine, StoreName.TrustedPeople, "servicecert.there.com");

// Add the policy to the proxy
Policy policy = new Policy();
MySecurityClientAssertion assertion = new MySecurityClientAssertion();
assertion.SetServiceCertificate(serviceCert);
assertion.SetClientCertificate(clientCert);
policy.Assertions.Add(assertion);
wsClient.SetPolicy(policy);

// Assign the service URL and call an operation
wsClient.Url = "https://services.there.com/TheirService.asmx";
TheirOperationResponse r = wsClient.CallTheirOperation();

証明書の保存や信頼の連鎖よりもはるかに優れていることを理解できるので、コードが間違っていることを願っています。どんな助けでも素晴らしいでしょう。努力してくれてありがとう。

4

1 に答える 1

2

問題がチェーンにある場合は、他のすべての証明書も証明書ストアにある必要があります。

それでは、上から始めましょう。MMC を起動し、証明書管理スナップインを追加して、ローカル コンピューター アカウントをポイントします。

現在、信頼されたルート機関のチェックに「VeriSign Class 3 Public Primary CA」があり、使用しようとしている証明書のルート CA と一致します。(そこにあるはずです、それは標準的なものです)。

次に www.verisign.com/CPS Incorp.by Ref. を確認してください。LIABILITY LTD.(c)97... は中間認証局ストアにあります。私のマシンにはこれらが2 つあり、そのうちの 1 つが期限切れです。

両方が存在する場合は、証明書チェーンをもう少し詳しく調べる必要があります。ブラウザーに Web サービスをロードし、ブラウザーからどの証明書エラーが表示されるかを確認します。サイトにアクセスし続けると、SSL アイコンをクリックして、チェーンを上っていくことができます。南京錠をクリックし、[証明書の表示] を選択します。次に、認証パス タブを選択します。チェーンが表示され、問題のある証明書が強調表示されることを願っています (問題のある Web サイトが今のところ見つからないため、どのように見えるか思い出せません)。最も低いものを選択し、それを強調表示して [証明書の表示] をクリックして、エラーの内容を確認します。期限切れの証明書またはそのようなものであることがわかる場合があります。

于 2009-10-02T11:42:44.607 に答える