6

私の WCF サービスには、クライアントとサービス間のデータセット (csv 形式) の送信が含まれます。このデータセットは、データが傍受されないように暗号化する必要があります。wshttpbinding を使用しており、web.config で次の設定を使用してメッセージを暗号化しようとしています。

<wsHttpBinding>
  <binding name="wsHttp">
    <reliableSession enabled="true" /> 
    <security mode="Message">
      <message clientCredentialType="UserName" algorithmSuite="TripleDes" />
    </security>
  </binding>
</wsHttpBinding>

クライアント プロキシを生成しようとすると、長いエラー メッセージ ボックスが表示されます (画面の下部からはみ出すため、完全に読み取ることができません!)。エラー メッセージには、「サービス証明書が提供されていません」という内容が記載されています。

メッセージを暗号化するにはどうすればよいですか? 証明書は必要ですか? このサービスはさまざまなドメインからインターネット経由で使用されるため、「ユーザー名」セキュリティを使用することが最善のオプションであるかどうかはわかりません (?)

基本的に私は混乱しています!

4

3 に答える 3

4

はい、暗号化キーを安全に交換できるように、サービスには証明書が必要です。makecert.exe を使用して、テスト サービス認証証明書を作成できます。その詳細については、私のブログのこのエントリを参照してください。

また、サービスを実行しているアカウントが証明書の秘密鍵ファイルを読み取ることができることを確認する必要があります。Windows Vista (またはそれ以降) を使用している場合は、証明書 MMC スナップインを使用してその秘密キーのアクセス許可を制御できますが、以前のバージョンの Windows では少し難しくなります。以前は WSE3 に付属のユーティリティを使用していましたが、他の誰かがより直接的な方法を提案できるかもしれません。サービスが管理者として実行されていない限り、これらの権限を調整する必要があります。

更新: すべての良いことと同様に、私のブログは終了しました。思い出させてくれたmakerofthings7に感謝します。サービス認証証明書を生成するために必要な makecert コマンドは、次のようなものです...

makecert -sr LocalMachine -ss My -pe -n CN=subject-name -eku 1.3.6.1.5.5.7.3.1 -sky exchange

...サブジェクト名を、サービスにとって意味のある証明書名に置き換えるだけです。

于 2008-11-11T13:38:43.547 に答える
4

@Martinは正しいです。サーバーに証明書が必要です。このリンクには、メッセージ ベースのセキュリティの通信フローの概要とサンプル コードが含まれています。このリンクには、証明書の操作の概要が記載されています。

認証要件については、このリンクで利用可能なさまざまなオプションを確認してください。WCF を初めて使用する場合は、Michele Bustamante による Learning WCF: A Hands-on Guide が良い本であり、メッセージ ベースのセキュリティについて説明しています。

于 2008-11-11T13:44:24.567 に答える
1

私はまだこの問題の解決策を見つけようとしています。私も持っていますが、xmlに署名します。それでも、IISがWinXPで実行しているユーザーを見つけるには、[スタート]>[マイコンピュータ]を右クリック>[管理]>[サービスとアプリケーション]>[サービス]>[IIS管理者]>[ログオン]タブで、通常は[ローカルシステム]と表示されます。

編集

OK、これが私の問題を解決した方法です。私はこの記事 を使って証明書を作成したという証明書を持っていました。プロジェクトがCフォルダーに保存されているASPWebSiteである場合は、これに問題がない可能性があります。ただし、HTTPプロジェクトとしてIISに保存すると、問題が発生します。

数週間の調査の後でそれを解決する方法はそれほど難しくありません。Microsoftには、最新のWebサービス拡張機能と呼ばれるものがありますが、私は最新のサービスパックを備えた2番目の拡張機能を使用しています。インストールしたとき、すべてを有効にしました。

証明書は物理ファイルに含めることができますが、通常は証明書管理ストアにあり、WSE2.0のツールX509証明書ツールを使用して証明書にアクセスできます。ここで、証明書が見つかるまで、さまざまなセクションで証明書を探して開きます。次にそれを開き、下部に[秘密鍵の表示]が表示されます。[セキュリティ]タブにLOCALHOST\ASPNETを追加します。そしてこれはあなたのウェブサイトが証明書を読むことを可能にするはずです。

つまり、公開鍵と秘密鍵を作成すると、秘密鍵は問題なく表示されますが、実際にはファイルシステムのTimbuktuに送信され、読み取りアクセス用のASPNETアカウントを追加するために見つける必要があります。私はVistaよりも読んでいますが、これははるかに簡単ですが、XPを使用しています。

于 2008-12-24T16:29:46.577 に答える