LoginSignup
19
19

More than 5 years have passed since last update.

web.configの暗号化

Posted at

IISの制御ファイルであるweb.configにはDB接続情報などが平文のまま格納されていますので、流出しないように注意する必要があります。

この問題を回避するためにMicrosoftからaspnet_regiisという暗号化ツールが提供されています。

aspnet_regiisとは何か

aspnet_regiisは.NET Frameworkに同梱されているツールで、主にASP.NETをIISに登録するためのツールですが、web.configファイルを暗号化する機能もあります。

aspnet_regiis格納場所

.NET Frameworkの各バージョンのフォルダにあります。

バージョン 格納場所
1 %windir%.NET\Framework\v1.0.3705
1.1 %windir%\Microsoft.NET\Framework\v1.1.4322
2.0(32ビット) %windir%\Microsoft.NET\Framework\v2.0.50727
2.0(64ビット) %windir%\Microsoft.NET\Framework64\v2.0.50727
4(32ビット) %windir%\Microsoft.NET\Framework\v4.0.30319
4(64ビット) %windir%\Microsoft.NET\Framework64\v4.0.30319

※ 3.0と3.5には同梱されていないので他のバージョンのaspnet_regiisを使うこと

aspnet_regiisの使い方

aspnet_regiis -pef "<暗号化したいセクション>" "<web.configのあるフォルダパス>"

例)C:\Inetpub\wwwroot\web.configのconnectionStringsを暗号化したい場合

aspnet_regiis -pef "connectionStrings" "C:\Inetpub\wwwroot\web.config"

下層のセクションを指定したい場合はsystem.web/machineKeyのように「/」区切りで指定します。

複合化するにはオプションを-pefから-pdfに変更するだけです。

うまく動かなかった例

windows server 2016環境でDomain Adminsグループに所属するユーザで暗号化を行ったところ、こんなエラーが出ました。

Microsoft(R) ASP.NET IIS 登録ツール バージョン 4.0.30319.0
ローカル コンピューターの ASP.NET をインストールおよびアンインストールするための管理ユーティリティです。
Copyright(C) Microsoft Corporation.  All rights reserved.
構成セクションを暗号化しています...
connectionStrings のための構成セクション ハンドラーを実行中にエラーが発生しました。

プロバイダー 'RsaProtectedConfigurationProvider' を使用してセクション 'connectionStrings' を暗号化することができませんでした。プロバイダーからのエラー メッセージ: オブジェクトは既にあります。

失敗しました!

解決方法はなんてことはない、コマンドプロンプトを「管理者として実行」すればよかっただけでした。

※日本語で「オブジェクトは既にあります」をweb検索しても全然ヒットせず、UIを英語に変えて表示されるエラーメッセージ「Object already exists.」で検索したらすぐ見つかりました。
Stack Overflow

参照URL

ASP.NET IIS 登録ツール (Aspnet_regiis.exe)
https://msdn.microsoft.com/ja-jp/library/k6h9cz8h(v=vs.100).aspx

19
19
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
19