asp.net下加密Config的方法
程序员文章站
2024-03-07 08:49:02
复制代码 代码如下:
<appsettings>
<!-- 连接字符串是否加密 -->
<add key="constringencrypt" value="false"/>
<!-- 连接字符串,(可以扩展支持不同数据库)如果是加密方式,上面一项要设置为true,如果是明文server=127.0.0.1;database=codematic;uid=sa;pwd=,上面设置为false -->
<add key="connectionstring" value="data source=|datadirectory|\wm.mdb;persist security info=true"/>
<!--权限模块连接字符串-->
<add key="connectionstringaccounts" value="data source=|datadirectory|\wm.mdb;persist security info=true"/>
<add key="connectionstring2" value="data source=|datadirectory|\wm.mdb;persist security info=true"/>
<!--虚拟目录名称(如果是站点,则为空) -->
<add key="virtualpath" value=""/>
<!--登录页地址 -->
<add key="loginpage" value="admin/login.aspx"/>
<!--默认菜单是否是展开状态-->
<add key="menuexpanded" value="false"/>
<!--实体对象内容缓村的时间(分钟)-->
<add key="modelcache" value="30"/>
</appsettings>
在asp.net2.0中新增了对web.config中的部分数据进行加密的功能,可以使用rsaprotectedconfigurationprovider和dpapiprotectedconfigurationprovider来加密,本文说明使用rsaprotectedconfigurationprovidert和计算机级别的密钥容器进行加密的步骤。
1. 首先确定要进行加密的web.config中的配置节是否可以加密
2. 创建rsa密钥容器
3. 在web.config中标识要使用的密钥容器
4. 对web.config进行加密
5. 授予对 rsa 密钥容器的访问权限
step 1:首先确定要进行加密的web.config中的配置节是否可以加密
asp.net 2.0支持对web.config的部分配置节进行加密,以下配置节中的数据是不能进行加密的:
* <processmodel>
* <runtime>
* <mscorlib>
* <startup>
* <system.runtime.remoting>
* <configprotecteddata>
* <satelliteassemblies>
* <cryptographysettings>
* <cryptonamemapping>
* <cryptoclasses>
step2:创建 rsa 密钥容器
若要创建 rsa 密钥容器,请使用 asp.net iis 注册工具 (aspnet_regiis.exe) 及 –pc 开关。必须为密钥容器指定一个名称,该名称标识应用程序的 web.config 文件的 configprotecteddata 节中指定的 rsaprotectedconfigurationprovider 所使用的密钥容器。为确保可以导出新创建的 rsa 密钥容器,必须包括 -exp 选项。
例如,下面的命令创建一个名为 abeenkeys 的 rsa 密钥容器,该容器是可导出的计算机级密钥容器。
aspnet_regiis -pc "abeenkeys"–exp
step 3: modify web.config to identify the key container
编辑web.config文件以标识要使用的密钥容器
在web.config中加以<configprotecteddata>来配置密钥容器, 使用名为 abeenkeys 的计算机级 rsa 密钥容器的
在<configuration>中加入xmlns属性
<configuration xmlns="http://schemas.microsoft.com/.netconfiguration/v2.0">
使用名为 abeenkeys 的计算机级 rsa 密钥容器的 saprotectedconfigurationprovider。
<configprotecteddata >
<providers>
<add name="abeenprovider"
type="system.configuration.rsaprotectedconfigurationprovider, system.configuration, version=2.0.0.0,culture=neutral, processorarchitecture=msil"
keycontainername="abeenkeys"/>
</providers>
</configprotecteddata>
step 4: encrypt the <connectionstrings> section of your web.config file
加密你的web.config文件中的配置节
> aspnet_regiis -pe "connectionstrings" -app "/connectiontest"
step 5:授予对 rsa 密钥容器的访问权限
可以通过以下代码确定应该给哪个用户权限
response.write(system.security.principal.windowsidentity.getcurrent().name);
默认情况下,rsa 密钥容器受到所在服务器上的 ntfs 访问控制列表 (acl) 的严密保护。这样能够限制可以访问加密密钥的人员,从而增强加密信息的安全性。必须首先向 asp.net 应用程序的进程标识授予对该 rsa 密钥容器的读取访问权限,然后 asp.net 才能使用 rsa 密钥容器。可以使用 aspnet_regiis.exe 工具及 -pa 开关,向 asp.net 应用程序的标识授予读取 rsa 密钥容器的权限。例如,下面的命令向 windows server 2003 network service 帐户授予对名为 abeenkeys 的计算机级 rsa 密钥容器的读取访问权限:
aspnet_regiis -pa "abeenkeys" "nt authority\network service"
注意:
如果 rsa 密钥容器是用户级容器,必须以其 windows 配置文件存储了密钥的用户的身份登录,并且必须包括 -pku 选项以授予对该用户级 rsa 密钥容器的访问权限。
若要使用计算机配置中指定的默认 rsaprotectedconfigurationprovider,必须首先向应用程序的 windows 标识授予对名为 netframeworkconfigurationkey 的计算机密钥容器的访问权限,该计算机密钥容器是为该默认提供程序指定的密钥容器。例如,下面的命令向 network service 帐户授予对默认 rsaprotectedconfigurationprovider 所使用的 rsa 密钥容器的访问权限。
aspnet_regiis -pa "netframeworkconfigurationkey" "nt authority\network service"
netframeworkconfigurationkey rsa 密钥容器是 aspnet_regiis.exe 工具所发出的命令的默认密钥容器。因此上述命令也可以按以下方式发出:
aspnet_regiis -pa "nt authority\network service"
复制代码 代码如下:
<appsettings>
<!-- 连接字符串是否加密 -->
<add key="constringencrypt" value="false"/>
<!-- 连接字符串,(可以扩展支持不同数据库)如果是加密方式,上面一项要设置为true,如果是明文server=127.0.0.1;database=codematic;uid=sa;pwd=,上面设置为false -->
<add key="connectionstring" value="data source=|datadirectory|\wm.mdb;persist security info=true"/>
<!--权限模块连接字符串-->
<add key="connectionstringaccounts" value="data source=|datadirectory|\wm.mdb;persist security info=true"/>
<add key="connectionstring2" value="data source=|datadirectory|\wm.mdb;persist security info=true"/>
<!--虚拟目录名称(如果是站点,则为空) -->
<add key="virtualpath" value=""/>
<!--登录页地址 -->
<add key="loginpage" value="admin/login.aspx"/>
<!--默认菜单是否是展开状态-->
<add key="menuexpanded" value="false"/>
<!--实体对象内容缓村的时间(分钟)-->
<add key="modelcache" value="30"/>
</appsettings>
在asp.net2.0中新增了对web.config中的部分数据进行加密的功能,可以使用rsaprotectedconfigurationprovider和dpapiprotectedconfigurationprovider来加密,本文说明使用rsaprotectedconfigurationprovidert和计算机级别的密钥容器进行加密的步骤。
1. 首先确定要进行加密的web.config中的配置节是否可以加密
2. 创建rsa密钥容器
3. 在web.config中标识要使用的密钥容器
4. 对web.config进行加密
5. 授予对 rsa 密钥容器的访问权限
step 1:首先确定要进行加密的web.config中的配置节是否可以加密
asp.net 2.0支持对web.config的部分配置节进行加密,以下配置节中的数据是不能进行加密的:
复制代码 代码如下:
* <processmodel>
* <runtime>
* <mscorlib>
* <startup>
* <system.runtime.remoting>
* <configprotecteddata>
* <satelliteassemblies>
* <cryptographysettings>
* <cryptonamemapping>
* <cryptoclasses>
step2:创建 rsa 密钥容器
若要创建 rsa 密钥容器,请使用 asp.net iis 注册工具 (aspnet_regiis.exe) 及 –pc 开关。必须为密钥容器指定一个名称,该名称标识应用程序的 web.config 文件的 configprotecteddata 节中指定的 rsaprotectedconfigurationprovider 所使用的密钥容器。为确保可以导出新创建的 rsa 密钥容器,必须包括 -exp 选项。
例如,下面的命令创建一个名为 abeenkeys 的 rsa 密钥容器,该容器是可导出的计算机级密钥容器。
aspnet_regiis -pc "abeenkeys"–exp
step 3: modify web.config to identify the key container
编辑web.config文件以标识要使用的密钥容器
在web.config中加以<configprotecteddata>来配置密钥容器, 使用名为 abeenkeys 的计算机级 rsa 密钥容器的
在<configuration>中加入xmlns属性
<configuration xmlns="http://schemas.microsoft.com/.netconfiguration/v2.0">
使用名为 abeenkeys 的计算机级 rsa 密钥容器的 saprotectedconfigurationprovider。
复制代码 代码如下:
<configprotecteddata >
<providers>
<add name="abeenprovider"
type="system.configuration.rsaprotectedconfigurationprovider, system.configuration, version=2.0.0.0,culture=neutral, processorarchitecture=msil"
keycontainername="abeenkeys"/>
</providers>
</configprotecteddata>
step 4: encrypt the <connectionstrings> section of your web.config file
加密你的web.config文件中的配置节
> aspnet_regiis -pe "connectionstrings" -app "/connectiontest"
step 5:授予对 rsa 密钥容器的访问权限
可以通过以下代码确定应该给哪个用户权限
response.write(system.security.principal.windowsidentity.getcurrent().name);
默认情况下,rsa 密钥容器受到所在服务器上的 ntfs 访问控制列表 (acl) 的严密保护。这样能够限制可以访问加密密钥的人员,从而增强加密信息的安全性。必须首先向 asp.net 应用程序的进程标识授予对该 rsa 密钥容器的读取访问权限,然后 asp.net 才能使用 rsa 密钥容器。可以使用 aspnet_regiis.exe 工具及 -pa 开关,向 asp.net 应用程序的标识授予读取 rsa 密钥容器的权限。例如,下面的命令向 windows server 2003 network service 帐户授予对名为 abeenkeys 的计算机级 rsa 密钥容器的读取访问权限:
aspnet_regiis -pa "abeenkeys" "nt authority\network service"
注意:
如果 rsa 密钥容器是用户级容器,必须以其 windows 配置文件存储了密钥的用户的身份登录,并且必须包括 -pku 选项以授予对该用户级 rsa 密钥容器的访问权限。
若要使用计算机配置中指定的默认 rsaprotectedconfigurationprovider,必须首先向应用程序的 windows 标识授予对名为 netframeworkconfigurationkey 的计算机密钥容器的访问权限,该计算机密钥容器是为该默认提供程序指定的密钥容器。例如,下面的命令向 network service 帐户授予对默认 rsaprotectedconfigurationprovider 所使用的 rsa 密钥容器的访问权限。
aspnet_regiis -pa "netframeworkconfigurationkey" "nt authority\network service"
netframeworkconfigurationkey rsa 密钥容器是 aspnet_regiis.exe 工具所发出的命令的默认密钥容器。因此上述命令也可以按以下方式发出:
aspnet_regiis -pa "nt authority\network service"
上一篇: PHP使用DOM和simplexml读取xml文档的方法示例
下一篇: Java 异常详解