5

私はしばらくの間 WCF に苦労してきましたが、それを理解できないようです。SSL が有効になっている (自己署名ルート CA からの署名付き証明書を使用する) 自己ホスト型 WCF サービスを使用していますが、これまでのところ問題ありません。このサービスは企業間通信のためのものであるため、証明書が最適なソリューションであると思われました。

(私は現在 WS バインディングを使用していますが、すべてのバインディング メソッドが (私の知る限り) クライアント証明書によるトランスポート レベルのセキュリティをサポートしているため、これは開発目的のためだけです。)

サービスに関連するいくつかの構成ビット:

<bindings>
  <wsHttpBinding>
    <binding name="wsHttpBinding">
      <security mode="Transport">
        <transport clientCredentialType="Certificate"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

<!-- snip -->

<serviceCredentials>
  <clientCertificate>
     <authentication certificateValidationMode="PeerTrust" trustedStoreLocation="CurrentUser" />
  </clientCertificate>
</serviceCredentials>

WCF サービスを実行しているユーザーの「信頼できる人」ストアにある自己署名証明書をクライアントに使用させると、失敗します。自分のルート CA によって署名された証明書を使用すると、「信頼できる人」ストアになくても機能します。

自己署名証明書を使用して「信頼できる人」ストアに保存すると、うまくいくと思っていました。しかし、追加の検証が行われているようです。何か足りないものがありますか? より良い方法はありますか?

4

3 に答える 3

0

そうです、トランスポートのセキュリティと証明書の検証は、WCF が制御できない下位レベルで処理されます。そのため、カスタム バリデータなどを使用したこうした手の込んだ機能はすべて、トランスポート セキュリティでは機能せず、メッセージ セキュリティのみで機能します。トランスポート セキュリティのみを使用しながらクライアントからのアクセスを制限するには、CTL (証明書信頼リスト) を設定する必要があります。次のサイトは、いくつかの指針を提供するはずです。

http://www.leastprivilege.com/CertificateBasedAuthenticationAndWCFTransportSecurity.aspx http://viisual.net/configuration/IIS7-CTLs.htm

于 2010-07-13T10:05:23.817 に答える