今天无聊,突然看起了petshop的代码,看到了membership连接字符串为SQLMembershipConnString,但在connectionString中并没有发现对应的名字,而且在connectionString中发现了奇怪的字符:
<connectionStrings configProtectionProvider
=
"
RsaProtectedConfigurationProvider
"
>
直觉上告诉我这是一个加密了的东东,于是打开了msdn,找到了相关信息。
对web.config的加密主要是通过以下命令完成:
加密:
aspnet_regiis
-
pe
"
connectionStrings
"
-
app
"
/SampleApplication
"
-
prov
"
RsaProtectedConfigurationProvider
"
解密:
aspnet_regiis
-
pc
"
RsaProtectedConfigurationProvider
"
–exp
但输入以上信息时你会发现一个错误(具体内容已经忘了,好像是提示你没有权限之类的)。这时你要先执行一个命令,利用aspnet_regiis的另一个参数:-pc 和-exp先建立一个rsa key 的容器(msdn上的说法,我不清楚container是否应该译为容器)。在petshop中,使用的rsa provider为 RsaProtectedConfigurationProvider。创建rsa key container命令为:
aspnet_regiis
-
pc
"
RsaProtectedConfigurationProvider
"
–exp
现在你就可以在这个容器里对web.config中相应的节(session)进行加解密了。如果你用上面所介绍的命令可能会遇到另一个问题,你会发现不能连接相应的application,这有可能是你的网站没有在iis里建立(我通常做开发的时候是用文件系统来创建网站的)。你可以在iis里建立你的网站,你可以采用另外一种方式——利用aspnet_regiis的另外一个参数:-pef(加密) -pcf(解密)
加密:
aspnet_regiis.exe
-
pef
"
connectionStrings
"
"
C:\petshop4.0\web
"
解密:
aspnet_regiis.exe
-
pdf
"
connectionStrings
"
"
C:\petshop4.0\web
"
现在你就可以对web.config上相应的节进行加解密了。
这是我对web.config加解密学习中的一些总结,防止以后再要查msdn。