0

web.configで接続文字列を暗号化しようとしています。マイクロソフトのガイドラインに従いましたが、機能しません。http://msdn.microsoft.com/en-us/library/ff650304.aspx#paght000006_step3

「構成セクションの暗号化に成功しました!」コマンドプロンプトで。web.configから「connectionStrings」セクションを削除し、新しく追加された「connectionStrings」を暗号化されたデータで保持しました。

Entity Framework用に2つのMSSQLデータベース接続文字列がありましたが、実行時のコンパイル時に、「指定された名前付き接続が構成に見つからないか、EntityClientプロバイダーでの使用を目的としていないか、無効です」というエラーが発生します。

モデルedmxファイルを開き、データベースからモデルを更新する場合。Visual Studioは、「プロバイダーRSAProtectedConfigurationProviderを使用して復号化できませんでした...RSAキーコンテナーを開くことができませんでした」というエラーを表示します。

    <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
      <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
        xmlns="http://www.w3.org/2001/04/xmlenc#">
        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
          <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
            <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
            <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
              <KeyName>Rsa Key</KeyName>
            </KeyInfo>
            <CipherData>
              <CipherValue>..........</CipherValue>
            </CipherData>
          </EncryptedKey>
        </KeyInfo>
        <CipherData>
          <CipherValue>........</CipherValue>
        </CipherData>
      </EncryptedData>
    </connectionStrings>

--------解決しました。以下に回答してください。------

4

3 に答える 3

2

キーを作成したアカウントと、アプリを実行しているアカウントが異なるようです。適切なアカウントがキー ストアにアクセスできることを確認しましたか? あなたが送ったその記事から...

ASP.NET アプリケーション ID へのアクセスを許可するには a. どの ID を使用すればよいかわからない場合は、次のコードを使用して Web ページから ID を確認します。

using System.Security.Principal;

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write(WindowsIdentity.GetCurrent().Name);
}

既定では、Windows Server 2003 上の ASP.NET アプリケーションは、NT Authority\Network Service アカウントを使用して実行されます。.NET コマンド プロンプトを開き、次のコマンドを使用して、このアカウントに NetFrameworkConfigurationKey ストアへのアクセスを許可します。 aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT Authority\Network Service"

コマンドが正常に実行されると、次の出力が表示されます。RSA キー コンテナにアクセスするための ACL を追加しています... 成功しました!

次のフォルダーでファイルの ACL を確認できます。

\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys

RSA キー コンテナー ファイルは、このフォルダー内の最新のタイムスタンプを持つファイルです。

また、これらの単純なコマンドは、EF/Linq-to-Entities の使用にも機能するようでした

于 2012-05-24T18:24:17.897 に答える
0

aspnetコマンドを実行すると、暗号化されたデータが「connectionStrings」を置き換える必要があります。そうでない場合は、失敗します。aspnet_regiis -pe "connectionStrings" -app "/" -location "subfolder" -site "2"

そのコマンドを実行しましたが、-locationは必要ないことがわかり、それは正しくありませんでした。

暗号値XMLフィールドが非常に小さかったとき、私は知っていたはずです。

ただし、これら2つのコマンドでうまくいきます...

aspnet_regiis -pe "connectionStrings" -app "/" -site "2"

aspnet_regiis -pa "NetFrameworkConfigurationKey" "IIS APPPOOL \ MyApp"

于 2012-05-24T18:42:38.123 に答える
-1

プロジェクトを公開するサーバーでこのコードを実行します

string provider = "RSAProtectedConfigurationProvider";
string section = "connectionStrings";

protected void Page_Load(object sender, EventArgs e)
{

}
protected void btnEncrypt_Click(object sender, EventArgs e)
{
   Configuration confg = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
   ConfigurationSection configSect = confg.GetSection(section);
   if (configSect != null)
   {
      configSect.SectionInformation.ProtectSection(provider);
      confg.Save();
   }
}

protected void btnDecrypt_Click(object sender, EventArgs e)
{
   Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
   ConfigurationSection configSect = config.GetSection(section);
   if (configSect.SectionInformation.IsProtected)
   {
      configSect.SectionInformation.UnprotectSection();
      config.Save();
   }
}

このリンク: http://www.codeproject.com/Tips/304638/Encrypt-or-Decrypt-Connection-Strings-in-web-confi

<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>WagJ9DDjWTNc1nmYVNQXaQqXalQzXaiCHAOtUJvTWBRZiuT6UK1fBElM80PnL6dC5Umb8qvfHdkSMgoMW9CJzwOTZ0zTy17JBGZqRQmlfW2G9LacoWIil0UrxjhgmJmRXhwXHFpdGwEVl7AoQGVlJGabXuChutaTxmfGOoUbCr0=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>qry5qnr3qxOgyoNPeP7OKEiHpr/PPTsaeQ2mYUsSK7cg4Kkl9uPO4RyUXgBIkgCTsjbObqLlyndcSBnYyek6bxG/IBL82G1R5J1ci8i1eyt8kIDqouzYOx5vtouErld4z1L+7WGf9Wg37QAH5RiiEfkCHndJJq3dTqjxnnXZSno6NgbxSXDfqzwE/eKDVhGV3oaTQSfjVmO8e5a9wvREYeeyasDhojx8J2mdy7/Q9rEIpv98RTiRxA==</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>    
于 2012-12-30T05:45:10.727 に答える