app.configで接続文字列を暗号化するのに問題があります。app.configのconnectionStringsセクションを保護するコードがありますが、パスワードはプレーンテキストで表示されます。
接続文字列を暗号化して、展開時にプレーンテキストにならないようにする必要があります。web.configのSOにも同様の質問がありますが、app.configにはありません。
app.configで接続文字列を暗号化するのに問題があります。app.configのconnectionStringsセクションを保護するコードがありますが、パスワードはプレーンテキストで表示されます。
接続文字列を暗号化して、展開時にプレーンテキストにならないようにする必要があります。web.configのSOにも同様の質問がありますが、app.configにはありません。
app.configの名前をweb.configに変更し、aspnet_regiisツールで暗号化してから、名前をapp.configに戻すだけで、web.configと同じソリューションを簡単に適用できます。
%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" c:\<folder containing your web.config>
フォルダレベルで停止し、末尾に「」を付けないでください)メモ帳で開いて、暗号化されたファイルを表示できます。Visual Studioでは、復号化されていることがわかります。接続文字列は、暗号化されていない場合と同じように使用できます。(暗号化されたのと同じマシンでのみ復号化できることに注意してください。)
この記事を見てください。いくつかの非常に役立つ例があります。あなたは基本的にSystem.Configuration.SectionInformation.ProtectSection
ここであなたを助けるために探しています。
保護された構成の実装もご覧ください
•名前の変更App.config file to web.config<br>
•管理者としてコマンドプロンプトを実行します。
暗号化の場合:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings"
引用符で囲まれたプロジェクトの場所と-prov "DataProtectionConfigurationProvider"
元:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "D:\location\location1\location" -prov "DataProtectionConfigurationProvider"
復号化の場合:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings"
引用符で囲まれたプロジェクトの場所。
元:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "D:\location1\location"
エラーの場合:
これを構成に追加しますxmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"
このような:
•最後に、名前をに変更web.config
しますApp.Config
config
ファイルの場所を定義する
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
暗号化したい場合 connectionStrings
config.ConnectionStrings.SectionInformation.ProtectSection(Nothing);
アプリの設定部分に注意する必要があります
したがって、暗号化する場合AppSettings
config.AppSettings.SectionInformation.ProtectSection(Nothing);
さらに、 Webファームで接続文字列を暗号化および復号化したい人がいる場合は、次の手順を実行します。
RSAキーを作成します。
aspnet_regiis -pc "MyKeys" -exp
このキーへのアプリケーションプールIDへのアクセスを許可します。
aspnet_regiis -pa "MyKeys" "IIS AppPool\ApplicationPoolName" -full
RSAプロバイダーをweb.configに追加します。
<configuration>
<configProtectedData>
<providers>
<add name="MyProvider"
type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
keyContainerName="MyKeys"
useMachineContainer="true" />
</providers>
</configProtectedData>
</configuration>
RSAプロバイダーを使用してweb.configを暗号化します。
aspnet_regiis -pe "connectionStrings" -app "/MyApplication" -prov "MyProvider"
注:単一サーバーのシナリオで行ったような代替構文を使用できます。例:
ASPNET_REGIIS -pef "connectionStrings" "D:\inetpub\wwwroot\applicationFolder" -prov "MyProvider"
web.configを開き、接続文字列が暗号化されていることを確認します
サイトをテストして、機能していることを確認します
web.configを復号化してみてください。以下のコードを含むtest.aspxファイルを作成します。復号化されたファイルを表示するには、それを参照してください
RSAキーをCドライブにエクスポートします。
aspnet_regiis -px "MyKeys" "c:\keys.xml" -pri
このファイルをWebファームの2番目のサーバーにコピーします
そのサーバーにインポートします。
aspnet_regiis -pi "MyKeys" "c:\keys.xml"
このキーへのアクセスを許可します(ステップ2と同じ)
2番目のサーバーでアプリケーションをテストします
これを自動化する方法:
ProjectSettings>コンパイル>BuildEvents>ビルド後の編集
以下のコードを貼り付けます。
SET ApplicationName=YourAppWithoutExtention
echo.
echo POST BUILD ACTIONS
echo ====================
if EXIST web.config (
echo Deleting web.config
DEL web.config
)
echo Renaming %ApplicationName%.exe.config to web.config
REN %ApplicationName%.exe.config web.config
echo Running aspnet_regis against webconfig
SET rpath=%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" "$(TargetDir)
SET rpath=%rpath:~0,-1%"
echo Path: %rpath%
%rpath%
echo Renaming web.config to %ApplicationName%.exe.config
REN web.config %ApplicationName%.exe.config
echo Done.
「YourAppWithoutExtention」をアプリ名に置き換えます。
その後、ビルドするたびに、app.configが自動的に暗号化されます。