1

私は現在、DotNetOpenAuthv4.1.0.12182を使用して単純なRelyingParty機能を実行ており、web.configエントリを追加しなくても機能させることができました(GoogleとYahooでテスト済み)。ただし、このサイトは、次の設定が有効になっているWebサーバーに展開されます。

  1. [コントロールパネル]>[管理ツール]>[ローカルセキュリティポリシー]に移動します
  2. 「システム暗号化:FIPS準拠のアルゴリズムを使用する...」の設定を見つけて、「有効」に設定します

これを有効にしないと、サイトは正常に機能します。これを有効にすると、「この実装はWindowsプラットフォームのFIPS検証済み暗号化アルゴリズムの一部ではありません」というサーバーエラーが発生します。dotnetopenauth v4-0ベータリリースページで、DotNetOpenAuth 4.0リリースの時点で、変更の1つが「FIPS準拠のSHAアルゴリズムを.configファイルで構成できるようになりました」という情報を見つけました。

助けが必要なもの...

このFIPSメッセージ/エラーをなくすために必要な構成の変更を知りたいと思っています。[http://www.dotnetopenauth.net/developers/help/configuration-options/] [2]を見てきましたが、FIPSに関連するものが明確にわかりません。どんな助けでも大歓迎です、ありがとう!

更新(2012年7月10日)

エラーを再現できるように、再実行した手順を提供します。

  1. 私はServer2008R2 Enterpriseのかなり新しいインストールを使用しました(すでにVS 2010がインストールされており、おそらくいくつかの更新があります)
  2. Webサーバーの役割を追加しました
  3. .NETFramework3.5.1機能を追加しました
  4. ローカルセキュリティポリシーを有効にしました:システム暗号化:暗号化、ハッシュ、および署名にFIPS準拠のアルゴリズムを使用します
  5. サーバーを再起動しました
  6. OpenIdRelyingPartyWebFormsサンプルをコンパイル/ビルドし、ローカルIISWebサイトとして使用するために公開しました
  7. URIエラーが発生したため、ASP.NETv4.0を使用するようにアプリプールを設定する必要がありました
  8. 「.NET4の強制インストール」が必要になった別のエラーが発生しました:http://devonenote.com/2010/06/could-not-load-type-system-servicemodel-activation-httpmodule/
  9. これで、「Relying Party」Webページが最終的にレンダリングされたので、[Members Only]リンクをクリックしてから、[Sign In withYahooID]オプションをクリックしました。
  10. 処理のために約2〜3秒休止した後、私は受け取ります:

[ InvalidOperationException:この実装は、WindowsプラットフォームのFIPS検証済み暗号化アルゴリズムの一部ではありません。]
System.Security.Cryptography。SHA512 Managed..ctor()+4479214

[ TargetInvocationException:呼び出しのターゲットによって例外がスローされました。]System.Security.Cryptographyを実行しようとしたとき。SHA512 .Create +11、次にSystem.Security.Cryptography.CryptoConfig.CreateFromName +1195

[ TypeInitializationException:'DotNetOpenAuth.OpenId.HmacShaAssociation'の型初期化子が例外をスローしました。]DotNetOpenAuth.OpenId.HmacShaAssociation.TryFindBestAssociation(cs:134)

トラブルシューティング手順...

  1. タグの下のFramework64/v4.0.30319 / Config / machine.configに(Andrewが提供したリンクに基づいて)構成エントリを追加しました。ただし、Security.Cryptogrophy DLLをどこにも追加していないため、構成からこれらの行(HMACSHA512を処理する行)を削除しました。
  2. マシンを再起動しました
  3. [YahooIDでサインイン]ボタンに戻ってクリックしました

[ InvalidOperationException:この実装は、WindowsプラットフォームのFIPS検証済み暗号化アルゴリズムの一部ではありません。]
System.Security.Cryptography。SHA3​​84 Managed..ctor()+4486510

[ TargetInvocationException:呼び出しのターゲットによって例外がスローされました。]System.Security.Cryptographyを実行しようとしたとき。SHA3​​84 .Create +11、次にSystem.Security.Cryptography.CryptoConfig.CreateFromName +1195

[ TypeInitializationException:'DotNetOpenAuth.OpenId.HmacShaAssociation'の型初期化子が例外をスローしました。]DotNetOpenAuth.OpenId.HmacShaAssociation.TryFindBestAssociation(cs:134)

私が気付いたのは、SHA512ではなくSHA384について不平を言っているため、SHA512のmachine.configエントリ(System.Core内でSHA512Cngクラスを使用するようにASP.NETに指示する)が機能している必要があることです。

そこで次に、SHA384とSHA256のエントリを追加し、iisresetを実行して、YahooIDボタンでサインインに戻ってクリックしました。今回、私はついにYahooにリダイレクトされ、ログインして、ローカルホストURLに送り返されましたが、次のFIPSエラーを受け取りました。

[ InvalidOperationException:この実装は、WindowsプラットフォームのFIPS検証済み暗号化アルゴリズムの一部ではありません。]System.Security.Cryptography。HMACSHA256 ..ctor(Byte [] key)+4491026

だから今、私は次のことを進めました:

  1. HMACSHA512 machine.config行に追加されました。最初に取り出して、HMACSHA256用に複製しました。
  2. このMSDNブログに従って、GAC(windows \ assembly)に対するAndrewの応答で参照されているcodeplexプロジェクトからSecurity.Cryptography.dllファイルを追加しました。
  3. マシンを再起動しました
  4. Yahooボタンを参照してもう一度クリックしましたが、同じエラーが発生しました

新しい暗号化DLLがASP.NETによって「ピックアップ」されて使用されていないように見えます。だから、次に私は試しました:

  1. GACからのDLLの削除
  2. マシンを再起動します
  3. OpenIdRelyingPartyWebFormsサンプルへの参照として暗号化DLLを追加し、それを再コンパイルして公開し、既存のIISWebサイトファイルをオーバーライドしました
  4. Yahooボタンを参照してもう一度クリックしましたが、同じエラーが発生しました

HMACSHA256でこの問題をどのように乗り越えることができるかについてのアイデアはありますか?

4

2 に答える 2

0

必要なアルゴリズムのFIPS準拠バージョンを作成するには、.NET自体を構成する必要があります。続行する方法のガイダンスについては、コメントを含め、以前に提出され修正されたこの問題を確認してください。

于 2012-07-06T14:40:07.610 に答える
0

Andrewのコメント/リンクを使用して、ソリューションを機能させることができました。ただし、.NETFramework3.5を使用してFIPSの問題を克服することはできませんでした。.NET Framework 4.0にアップグレードしてから、machine.configXMLファイルのルート構成要素に以下を追加する必要がありました。

<mscorlib>
   <cryptographySettings>
      <cryptoNameMapping>
         <cryptoClasses>
            <cryptoClass CoreSHA512="System.Security.Cryptography.SHA512Cng, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <cryptoClass CoreSHA384="System.Security.Cryptography.SHA384Cng, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <cryptoClass CoreSHA256="System.Security.Cryptography.SHA256Cng, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
         </cryptoClasses>
         <nameEntry name="System.Security.Cryptography.SHA512" class="CoreSHA512"/>
         <nameEntry name="System.Security.Cryptography.SHA384" class="CoreSHA384"/>
         <nameEntry name="System.Security.Cryptography.SHA256" class="CoreSHA256"/>
      </cryptoNameMapping>
   </cryptographySettings>
</mscorlib>

上記でXMLが削除された場合は、Andrewが提供したリンクをたどると、joeudwinによる投稿でXMLが見つかります。「TestHMACSHA512」の行を削除し、「TestSHA512」の行を384エントリと256エントリに複製しました。CodePlexからSecurity.Cryptography.dllをダウンロードする必要はありませんでした。

于 2013-08-26T17:50:44.407 に答える