5

誰かがWebファーム環境のユーザーストアでDPAPIを正常に使用したかどうか疑問に思いましたか?

このアプリケーションは最近1.1から2.0ASP.NETアプリに変換されたため、CryptUnprotectメソッドを直接呼び出すカスタムラッパーを使用しています。ProtectedDataただし、これは2.0フレームワークで使用可能な方法と同じである必要があります。

Webファーム環境で運用しているため、暗号化を行ったマシンが復号化するマシンになることを保証することはできません。(また、マシンの障害によって暗号化されたデータが破壊されてはならないため)。

つまり、私たちが持っているのは、各Webボックスの特定のユーザーアカウントの下でサービスで実行されるサービスコンポーネントです。このユーザーは、推奨事項に従って、移動プロファイルを持つように設定されています。

私たちが抱えている問題は、あるマシンで暗号化された情報を別のマシンでは復号化できないことです。これは、win32エラーで失敗します。

「キーは指定された状態での使用には無効です」。

これは、暗号化サービスを複数のマシンでユーザーとして実行しているため、ユーザーが同時に複数のマシンにログインし続けているために、間違いを犯したためだと思います。

これが問題である場合、他のWebファーム環境のユーザーストアでDPAPIをどのように使用していますか?

4

4 に答える 4

9

Web ファーム環境では、DPAPI を使用してデータを直接暗号化/復号化するのではなく、保護されたデータを復号化するために後で使用するキーを暗号化するために使用します。

展開プロセスの一部として、各サーバーにキーを「インストール」します。インストール スクリプトは、AppPool の ID の下で実行する必要があり、暗号化されたキーを app.config ファイルまたはレジストリに格納できます。

暗号化されたデータ自体を中央のリポジトリ/データベースに保存して、ファーム内のすべてのサーバーからアクセスできるようにすることができます。データを復号化するために、Web アプリは、インストールされた場所から暗号化されたキーを取得し、DPAPI を使用して復号化し、その結果を使用して中央リポジトリからのデータを復号化します。

欠点は、最初のインストール プロセス中にクリアテキスト キーがローカル ディスクに短時間存在する可能性があり、運用スタッフに公開される可能性があることです。それが懸念される場合は、web.config machineKey などを使用して、暗号化のレイヤーを追加できます。

于 2011-12-27T02:10:12.130 に答える
3

Microsoft のポスターが間違っています。 http://support.microsoft.com/default.aspx?scid=kb;en-us;309408#6

「ローミング プロファイルを使用するときに DPAPI が正しく機能するには、ドメイン ユーザーはドメイン内の 1 台のコンピューターにのみログオンする必要があります。ユーザーがドメイン内の別のコンピューターにログオンする場合、ユーザーはログオフする必要があります。ユーザーが 2 番目のコンピューターにログオンする前に、最初のコンピューター。ユーザーが同時に複数のコンピューターにログオンしている場合、DPAPI は既存の暗号化されたデータを正しく復号化できない可能性があります。」

DPAPI はファーム設定では機能しないようです。これは Microsoft 側のかなり大きな見落としであり、ほとんどのエンタープライズ アプリケーションで DPAPI をほとんど役に立たなくしていると思います。

于 2010-11-23T15:55:53.447 に答える
3

私はちょうどこれを見ました。これを機能させる方法があります。それは、ファーム内のマシンがドメイン内にあることを確認し、ドメイン アカウントを使用してデータを暗号化および復号化することです (つまり、ドメイン アカウントでアプリケーションを実行します)。

キー マテリアルはサーバー間で交換されないため、ローカル アカウントで必要な方法で DPAPI を使用することはできません。

それが役立つことを願っています!

于 2010-03-25T23:22:22.873 に答える