私は現在、DotNetOpenAuthv4.1.0.12182を使用して単純なRelyingParty機能を実行しており、web.configエントリを追加しなくても機能させることができました(GoogleとYahooでテスト済み)。ただし、このサイトは、次の設定が有効になっているWebサーバーに展開されます。
- [コントロールパネル]>[管理ツール]>[ローカルセキュリティポリシー]に移動します
- 「システム暗号化: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日)
エラーを再現できるように、再実行した手順を提供します。
- 私はServer2008R2 Enterpriseのかなり新しいインストールを使用しました(すでにVS 2010がインストールされており、おそらくいくつかの更新があります)
- Webサーバーの役割を追加しました
- .NETFramework3.5.1機能を追加しました
- ローカルセキュリティポリシーを有効にしました:システム暗号化:暗号化、ハッシュ、および署名にFIPS準拠のアルゴリズムを使用します
- サーバーを再起動しました
- OpenIdRelyingPartyWebFormsサンプルをコンパイル/ビルドし、ローカルIISWebサイトとして使用するために公開しました
- URIエラーが発生したため、ASP.NETv4.0を使用するようにアプリプールを設定する必要がありました
- 「.NET4の強制インストール」が必要になった別のエラーが発生しました:http://devonenote.com/2010/06/could-not-load-type-system-servicemodel-activation-httpmodule/
- これで、「Relying Party」Webページが最終的にレンダリングされたので、[Members Only]リンクをクリックしてから、[Sign In withYahooID]オプションをクリックしました。
- 処理のために約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)
トラブルシューティング手順...
- タグの下のFramework64/v4.0.30319 / Config / machine.configに(Andrewが提供したリンクに基づいて)構成エントリを追加しました。ただし、Security.Cryptogrophy DLLをどこにも追加していないため、構成からこれらの行(HMACSHA512を処理する行)を削除しました。
- マシンを再起動しました
- [YahooIDでサインイン]ボタンに戻ってクリックしました
[ InvalidOperationException:この実装は、WindowsプラットフォームのFIPS検証済み暗号化アルゴリズムの一部ではありません。]
System.Security.Cryptography。SHA384 Managed..ctor()+4486510[ TargetInvocationException:呼び出しのターゲットによって例外がスローされました。]System.Security.Cryptographyを実行しようとしたとき。SHA384 .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
だから今、私は次のことを進めました:
- HMACSHA512 machine.config行に追加されました。最初に取り出して、HMACSHA256用に複製しました。
- このMSDNブログに従って、GAC(windows \ assembly)に対するAndrewの応答で参照されているcodeplexプロジェクトからSecurity.Cryptography.dllファイルを追加しました。
- マシンを再起動しました
- Yahooボタンを参照してもう一度クリックしましたが、同じエラーが発生しました
新しい暗号化DLLがASP.NETによって「ピックアップ」されて使用されていないように見えます。だから、次に私は試しました:
- GACからのDLLの削除
- マシンを再起動します
- OpenIdRelyingPartyWebFormsサンプルへの参照として暗号化DLLを追加し、それを再コンパイルして公開し、既存のIISWebサイトファイルをオーバーライドしました
- Yahooボタンを参照してもう一度クリックしましたが、同じエラーが発生しました