0

私は WPF アプリケーションを持っており、WCF を使用して Https 経由で php Web サービスを使用しています。サーバー上で自己署名証明書を作成してテストし、クライアントがこの証明書を使用するように構成しましたが、例外が発生して通知されましたクライアント証明書も渡す必要があることを私に伝えました。

実際には、送信されたメッセージを保護したいだけです。クライアントを認証する必要はありません。クライアント認証を無効にするにはどうすればよいですか。

clientCredentialType「Certificate」および.Net 3.5でセキュリティモデル「Transport」を使用しています。

事前に意見をありがとう..

アップデート

前述したように、クライアントの ID を検証するサービスは必要ないため、Transport Security With Certificate Authenticationではなく、 Transport Security with an Anonymous Clientを使用しました。クライアントの構成は次のとおりです。

<system.serviceModel>
<bindings>
  <wsHttpBinding>
    <binding name="bindingName" closeTimeout="00:0:04"
       openTimeout="00:00:04" receiveTimeout="00:00:04" sendTimeout="00:00:04"
       allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
       messageEncoding="Text" textEncoding="utf-8"
       useDefaultWebProxy="true">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"> 
      <security mode="Transport">
        <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
<client>
  <endpoint address="https://myServer/myApp/myWebService"
    binding="wsHttpBinding" bindingConfiguration="bindingName"
    contract="xx.yy" name="zz">
  </endpoint>
</client>

問題は次のとおりです。サービスを呼び出すと、「{My Service URL} への HTTP 要求が割り当てられたタイムアウトを超えました」というタイムアウト エラーが表示されます。

追加情報: サービスは HTTP 経由で正常に動作しました。問題は HTTPS に移行した場合にのみ発生し、インターネット ブラウザーで開くとサービスの WSDL が表示されますが、ブラウズでは安全でないリソースがあり、それを行う必要があることがわかりました。 WSDL を表示するためにすべてのリソースを表示するように強制します。

4

1 に答える 1

0

おそらくあなたの問題は次のとおりです。

// エンドポイント アドレスを作成します。// マシン名 は、サービスの認証に使用されるX.509 証明書のサブジェクトまたは // DNS フィールドと一致する必要があることに注意してください。


したがって、クライアント構成を確認し、証明書セクションfindValueの属性を確認して、証明書のものと一致させてください。

お気に入り

<clientCertificate findValue="contoso.com"
   storeLocation="CurrentUser"
   storeName="My"
   x509FindType="FindBySubjectName" />

証明書認証によるトランスポート セキュリティの詳細を参照してください。

于 2013-04-14T04:48:27.297 に答える