60

私たち (私たちの IT パートナー) は最近、所有している Web ファーム サイトの一部の DNS を変更しました。これにより、2 つの実稼働サーバーがそれらの間でラウンドロビン DNS スイッチングを行うようになりました。WebResource.axdこの切り替えの前は、ファイルに問題はありませんでした。切り替え以降、ライブの公開 URL にアクセスすると、次のエラーが発生します。

暗号例外

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

特定のサーバー自体にヒットすると、正常にロードされます。この問題を調査したところ、2 つのサーバー間でアセットを共有しているため、2 つのサーバー間で一貫して暗号化および復号化できるように、各サーバーで一貫性を持たせる必要があるmachineKeyようweb.configです。私の質問は次のとおりです。

  1. サーバー上のツールを使用して生成できますmachineKeyか、それともコードを記述する必要がありますか?
  2. machineKey各サーバーの にを追加するだけでよいweb.configですか、それとも 2 つのサーバーを連携させるために他に何かする必要があると思いますか? (web.config現在、どちらにも はありませんmachineKey)
4

3 に答える 3

72

これは答えるはずです:

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

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

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

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

<machineKey  
validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7
               AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"       

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

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

つまり、マシン キーを設定するには、次のリンクを参照してください: Setting Up a Machine Key - Orchard Documentation

IIS マネージャーを使用してマシン キーを設定する

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

管理コンソールを起動し、Web サイトを選択します。マシン キーの構成を開きます。 IIS Web サイト構成パネル

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

マシン キー構成パネル

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

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

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

存在しない場合は、すべてのアンダータグで次の行をweb.configファイルに追加します。webserverssystem.web

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

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

于 2010-10-04T13:53:09.977 に答える
21
于 2014-07-16T08:51:37.907 に答える
8

ちょうど発生したパディング oracle asp.net の脆弱性から学び(パッチを適用しましたよね? ...)、保護されたセクションを使用してマシン キーとその他の機密性の高い構成を暗号化してください。

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

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

于 2010-10-04T16:37:28.753 に答える