web-dev-qa-db-ja.com

web-farmサイトのweb.configにmachineKeyを追加する

私たち(私たちのITパートナー)は、最近、WebファームサイトのDNSをいくつか変更しました。これにより、2つの運用サーバー間でラウンドロビンDNSスイッチングが行われます。この切り替え前は、WebResource.axdファイルに問題はありませんでした。スイッチ以来、公開パブリックURLにアクセスすると、エラーが発生します。

CryptographicException

パディングは無効であり、削除できません。

特定のサーバー自体にヒットすると、それらは正常にロードされます。私は問題を調査しましたが、2つのサーバー間で資産を共有しているため、各サーバーのweb.configに一貫したmachineKeyが必要です。二。私の質問は:

  1. サーバー上のツールを介してmachineKeyを生成できますか、またはこれを行うためのコードを記述する必要がありますか?
  2. 各サーバーのweb.configmachineKeyを追加するだけですか、2つのサーバーを連携させるために他に何かする必要があると思いますか? (両方のweb.configには現在machineKeyがありません)
44
Mark Ursino

これは答えるべきです:

方法:ASP.NET 2.0でMachineKeyを構成する-Webファーム展開の考慮事項

Webファームの展​​開に関する考慮事項

アプリケーションをWebファームに展開する場合は、各サーバー上の構成ファイルがvalidationKeyとvalidationKeyに対して同じ値を共有していることを確認する必要があります。これらはそれぞれハッシュと復号化に使用されます。どのサーバーが連続した要求を処理するかを保証できないため、これが必要です。

手動で生成されたキー値では、設定は次の例のようになります。

<machineKey  
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
               AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"       

decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
validation="SHA1"
decryption="AES"
/>

アプリケーションを同じサーバー上の他のアプリケーションから分離する場合は、ファーム内の各サーバー上の各アプリケーションのWeb.configファイルに配置します。各アプリケーションに個別のキー値を使用するようにしてください。ただし、ファーム内のすべてのサーバーで各アプリケーションのキーを複製してください。

つまり、マシンキーをセットアップするには、次のリンクを参照してください: マシンキーのセットアップ-Orchard Documentation

IIS Managerを使用したマシンキーのセットアップ

OrchardがインストールされているサーバーのIIS管理コンソールにアクセスできる場合は、マシンキーをセットアップする最も簡単な方法です。

管理コンソールを起動して、Webサイトを選択します。マシンキー設定を開きます: The IIS web site configuration panel

マシンキーコントロールパネルには次の設定があります。

The machine key configuration panel

検証キーと復号化キーの両方の「実行時に自動生成」のチェックを外します。

パネルの右側にある「アクション」の下の「キーの生成」をクリックします。

「適用」をクリックします。

web.configタグの下にあるすべてのwebserverssystem.webファイルに次の行が存在しない場合は追加します。

<machineKey  
    validationKey="21F0SAMPLEKEY9C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
                   AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"           
    decryptionKey="ABAASAMPLEKEY56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F"
    validation="SHA1"
    decryption="AES"
/>

マシンキーとweb.configファイルの永続的なバックアップがあることを確認してください

54
BlackICE

IIS 7.5以降を使用している場合は、IISからマシンキーを生成し、web.configに直接保存します。Webファーム内で新しいweb.configを各サーバーにコピーするだけです。

  1. Open IIS manager。
  2. すべてのアプリケーションのMachineKeyを生成して保存する必要がある場合は、左ペインでサーバー名を選択します。その場合、ルートweb.configファイル(.NETフレームワークフォルダーにある)を変更します。特定のWebサイト/アプリケーション用にMachineKeyを作成する場合は、左側のペインからWebサイト/アプリケーションを選択します。その場合、アプリケーションのweb.configファイルを変更します。
  3. 中央のペインのASP.NET設定で[マシンキー]アイコンをダブルクリックします。
  4. MachineKeyセクションは構成ファイルから読み取られ、UIに表示されます。特定のMachineKeyを構成しておらず、自動的に生成された場合、次のオプションが表示されます。
  5. これで、右側のペインで[キーの生成]をクリックして、ランダムなMachineKeysを生成できます。 [適用]をクリックすると、すべての設定がweb.configファイルに保存されます。

@ MachineKeyを生成する最も簡単な方法–ヒントとコツ:ASP.NET、IIS and .NET development…

15
TheAlbear

padding Oracle asp.netの脆弱性 から学んだことを確認してください(パッチを適用しましたか?...)、 保護されたセクションを使用してマシンキーを暗号化します およびその他の重要な構成。

別のオプションは、マシンレベルのweb.configで設定することで、Webサイトフォルダーでも設定しません。

それを生成するには、Davidの回答にあるリンクされた記事と同じようにします。

6
eglasius