こっからの続きです。
「構成ファイルの暗号化/復号化(前編)」
「構成ファイルの暗号化/復号化(中編)」
中編ではエラーの原因が暗号化のときに使われるRSAキーコンテナに対するアクセス権がないっちうところまで確認してきました。
ほぢゃらば、アクセス権を与えましょ。
で、誰に??
RSAキーコンテナにアクセスするのをだれぞ?
これは言うまでもなく、ASP.NETのプロセスを動かしてる人です。
Windows Server 2003以降ならNETWORK SERVICEだし、それ以前ならASPNETなはずです。
が、しかし、偽装をONにしてる場合は話が変わってきます。
固定に偽装してる場合と、Webアプリにアクセスするユーザに偽装してる場合と...
あぁ、でもこの話に行くとまた長くなるので、偽装の話は後日書きましょか。
で、今回は偽装なしでってことで。(^^ゞ
でも、それでも疑り深いあなたは。System.Security.Principal.WindowsIdentity.GetCurrent().Nameプロパティを表示するようなページを作って実際のアカウントを確認してみましょう。
RSAキーコンテナにアクセスできるようにしよう!
これまたaspnet_regiis.exeを使います。こないな感じ。
aspnet_regiis -pa RSAキーコンテナ名 アカウント
具体例としてはこないな感じ。
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
これで一件落着、さっきのエラーがウソみたいにすっと実行できるようになります。
ちなみに、権限を外すにはオプションを-prにしましょう。
しかし、この権限情報ってどこでどう管理されてるんでしょ。
気になるぅ~~~。
だれかえろいひとおせーて。
構成ファイルを復号化するには
暗号化したはいいけど、その暗号化した情報を修正したい場合もありますよね。
そんな時は一旦復号化すりゃええんですな。
復号化は
aspnet_regiis -pdf 要素名 構成ファイルのフォルダ
でOKです。
具体的には
aspnet_regiis -pdf "connectionStrings" c:\InetPub\wwwroot\SampleWeb
修正したら-pefでまた暗号化しましょう。
RSAキーコンテナに対する権限はすでに与えているので、一度やればもうやらなくってOKよん。
いやぁ、ガラにもなく技術ネタ3連発はなんだか疲れちゃったわ(ん?4連発か)。
あさって(あ、いや、もう明日か)はそうはイカの金玉ですが。(^・^)