3

AJAX.NET5.7.25.1を使用しているアプリケーションのセクションがいくつかあります。サーバー管理者がFIPSを有効にしており、次のエラーが発生しています。

この実装は、WindowsプラットフォームのFIPS検証済み暗号化アルゴリズムの一部ではありません。

コールスタック:

at System.Security.Cryptography.MD5CryptoServiceProvider..ctor()     
at MS.Utilities.MD5Helper.GetHash(Byte[] data)     
at Ajax.AjaxRequestProcessor.Run()     
at Ajax.AjaxHandler.ProcessRequest(HttpContext context)     
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()     
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

新しいバージョンのAJAX.NETライブラリはFIPSに準拠していますか?

4

2 に答える 2

1

.NETでMD5ハッシュアルゴリズムを使用すると、FIPSに準拠していないと見なされるため、常にエラーが発生します。AjaxRequestProcessorがMD5で実行されているかどうかはわかりませんが、ある種のビューステート操作である可能性があります。MD5の代わりに3DESを使用するようにビューステート暗号化アルゴリズムを変更すると役立つ場合があります。

web.configファイルのsystem.webセクションにこのキーを追加してみてください。

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>

回避策に関する完全な記事はこちら

また、webconfigにdebug = "true"があるだけで、.NETが一部のデバッグ操作にMD5を使用するため、このエラーが発生する可能性があります。web.configにdebug="false"がありますか?

<system.web>
    <compilation debug="false">
</system.web>
于 2010-08-20T15:19:20.823 に答える
1

ここで行う最も速い方法は、AJAX.Netプロソースを直接変更して、MD5アルゴリズムを使用する問題のある呼び出しを削除することです。使用しているAJax.NETプロのバージョンのソースをCodeplexから入手してください。AjaxPro / Utilities / MD5Helper.cs:

行を交換してください...

MD5 md5 = new MD5CryptoServiceProvider();

行で...

SHA1 md5 = new SHA1CryptoServiceProvider();

それはそれを修正する必要があります。 SHA1はこのページごとにFIPSに準拠しています

この場合...使用されている唯一のAPIはComputeHash()メソッドであり、両方のプロバイダーがこれを実装しています...

暗号プロバイダーを切り替えるだけで、他の変更や迷惑なFIPSポリシー違反フラグなしでコードをコンパイルして使用できるはずです。

于 2010-08-25T19:01:15.743 に答える