加密和解密配置节

使用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 加密或解密 Web 配置文件的各节,这种加密只适用于程序部署之后防止配置文件泄露。当程序中需要使用加密的配置节时会自动解密;使用服务器 A 加密的配置节只能使用服务器 A 解密

相关文档

加密和解密配置节

加密和解密 Web 配置节

Aspnet_regiis.exe 工具位于 %windows%\Microsoft.NET\Framework\versionNumber 文件夹中

加密 Web 配置节

1
2
3
4
5
6
7
8
9
<!-- 加密前的 connectionStrings 和 appSettings 配置节 -->
<configuration>
<connectionStrings>
<add name="EFDbContext" connectionString="Data Source=(local);Initial Catalog=DB;User ID=sa;Password=sa123" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="ServiceAddress" value="http://192.168.1.1:80/"/>
</appSettings>
</configuration>
1
2
3
4
5
6
7
8
9
10
加密:
以管理员权限运行CMD
1.CD到ASP.NET IIS 注册工具目录
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
2.加密配置节
aspnet_regiis.exe -pe "connectionStrings" -app "/" -site 1
* -pe 对配置节进行加密
* "connectionStrings" 要加密的配置节
* -app "/" 配置文件路径,此处为站点根目录
* -site 1 站点ID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!-- 加密后的 connectionStrings 和 appSettings 配置节 -->
<configuration>
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>H4GqNkkSionoOKW1sqjvHHZeO/tOUK8st3T9aUjjr7YcucQlcA0EwLb8uZ79YpHpebxVIlMwanc4eDbAfAW4K7B+jaQxMktVcUqrwmkPZQRiW52FnEhRiQte2Dj8o4/ZJ34MqyoM7h3uRuccxwBhZZWtaqAI+E1zHHwt6nJoanXjKuNV2jPhArE4P9UcpiNWFNoHuW4vqUPeYKDqgPYd7F9qmf+7Q/I/dUuCjHzOGzuWe3ZMijHxYrO9Kmah+iy2kteaU2EYwdD1VvriGKTE21MJthXVO0BESAk+o4oJT2BHMPI62cV7hmOcqTdYydHSzntoIIqk+ueBwhd5UPsNvQ==</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>fQveikJJPmlGGZ1xsCYNgG9Fy1tr/3DXKQKjBtTNfDdD1Fr+L6TsFsd95kpP6CR6jOmUsAQmMUsXpimWAhk5djojzkVOKloF3j91iVKDHxCT27S4VuHtAIgVHhgWJv4MOSst8vjHBf85662BIi74rBU1D21cw3L8EWe31Z4nEONwxtrKnpeJBPB4maVwETnu83JTal3bgWMtcE7vbTILmrYuKWlcakzZNlQ7Mhhoc0zCBuI5P41fjuGTK18r05oEObDqR8gLDUoipgE83zezaA==</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
<appSettings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>gC1IpwdnSeYMW9CuvMEnLI2MbXt4Y4Ilew9bm8iG6RWEAvLiJ4pnQZZ1qP+ycsPeVHrjbGuBZViOa/t3ZMfI5FOOcDmlanVmyw+QmUCUzTtNLfLoUJaN3JGBQkioG6CVxlFcbo9POop8BXJAbRLymL+SpryXTrcx3nlJjj5TMDWXE170To88ZG5ll0dPujSjJ6kgOkURjCAhT7xbFKsS+l/E0FX36bfqbtzUmWb7ong4MVwe86z7eR5Ega9+6iYpw5nQhuSLR9IjOftLRan2/EB2iFiiopBQrwXB6pCzC5q08Yyq4pqdn5G1dEVBKdanljJiXrltxGwKu0fb524hQg==</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>dxHMzbfl45rlnUqRuIIFWFFyYuVLsh+VZWuYWJV7afWOC1bFeGREX2d+2JN/hkaPl9x+oFDt5llznHvrbsVPK+cCDjdmPgYhxMWXG51ENsqCRBizPbD7QnFeQlIwT7eQVHUEZbMyeAE=</CipherValue>
</CipherData>
</EncryptedData>
</appSettings>
</configuration>

解密配置节

1
2
3
4
5
6
7
8
9
10
解密:
以管理员权限运行CMD
1.CD到ASP.NET IIS 注册工具目录
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
2.解密配置节
aspnet_regiis.exe -pd "connectionStrings" -app "/" -site 1
* -pd 对配置节进行解密
* "connectionStrings" 要解密的配置节
* -app "/" 配置文件路径,此处为站点根目录
* -site 1 站点ID

帮助信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis.exe ?


-- ASP.NET 注册选项 --

-i 安装此版本的 ASP.NET,并更新根级别上的 IIS 配置以使用此版本的 ASP.NET。

-ir 安装此版本的 ASP.NET,仅注册。请不要更改任何 Web 应用程序以使用此版本。

-iru 安装此版本的 ASP.NET。如果有任何现有的应用程序使用 ASP.NET,则不会更改 IIS 配置以使用此版本。

-enable 使用 -i、-ir 或 -r 指定 -enable 以后,将在 IIS 安全控制台(IIS 6.0 或更高版本)中启用 ASP.NET。

-disable 使用 -i、-ir 或 -r 指定 -disable 以后,将在 IIS 安全控制台(IIS 6.0 或更高版本)中禁用 ASP.NET。

-s <路径> 在指定的路径以递归方式安装此版本的脚本映射。
例如,aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1

-sn <路径> 在指定的路径以非递归方式安装此版本的脚本映射。

-r 安装此版本的 ASP.NET,并更新 IIS 元数据库根处的脚本映射和根以下的所有脚本映射。无论原始版本是什么,都将现有的脚本映射升级到此版本。

-u 卸载此版本的 ASP.NET。将此版本现有的脚本映射重新映射到相应计算机上安装的其余 ASP.NET 版本中最高的版本。

-ua 卸载计算机上所有版本的 ASP.NET。

-k <路径> 从指定的路径中以递归方式移除所有版本的 ASP.NET 的所有脚本映射(Windows Vista 和更高版本不支持)。
例如,aspnet_regiis.exe -k W3SVC/1/ROOT/SampleApp1

-kn <路径> 从指定的路径中以非递归方式移除所有版本的 ASP.NET 的所有脚本映射(Windows Vista 和更高版本不支持)。

-lv 列出计算机上安装的所有版本的 ASP.NET,状态和安装路径也一并列出。

-lk 列出所有 IIS 元数据库键的所有路径(连同版本在内),ASP.NET 的脚本映射是在这些元数据库键中进行的。那些从父键继承了 ASP.NET 脚本映射的键不会显示(Windows Vista 和更高版本不支持)。

-c 将此版本的客户端脚本安装到每个 IIS 站点目录的 aspnet_client 子目录中。

-e 从每个 IIS 站点目录的 aspnet_client 子目录中移除此版本的客户端脚本。

-ea 从每个 IIS 站点目录的 aspnet_client 子目录中移除所有版本的客户端脚本。

-ga <用户> 为指定的用户或用户组授予权限,使其可以访问 IIS 元数据库和 ASP.NET 使用的其他目录。



-- 配置加密选项 --

-pe 节 对配置节进行加密。可选参数:
[-prov provider] 使用此提供程序进行加密。
[-app virtual-path] 在此虚拟路径加密。虚拟路径必须以正斜杠开头。如果此虚拟路径为“/”,则表示站点的根目录。如果未指定 -app,则对根目录下的 web.config 进行加密。
[-site site-name-or-ID] 在 -app 中指定的虚拟路径的站点。如果未指定,将使用默认网站。
[-location sub-path] 位置子路径。
[-pkm] 对 machine.config 而不是 web.config 进行加密/解密。

-pd 节 对配置节进行解密。可选参数:
[-app virtual-path] 在此虚拟路径解密。虚拟路径必须以正斜杠开头。如果此虚拟路径为“/”,则表示站点的根目录。如果未指定 -app,则对根目录下的 web.config 进行解密。
[-site site-name-or-ID] 在 -app 中指定的虚拟路径的站点。如果未指定,将使用默认网站。
[-location sub-path] 位置子路径。
[-pkm] 对 machine.config 而不是 web.config 进行加密/解密。

-pef 节 web-app-physical-dir 对配置节进行加密。可选参数:
[-prov provider] 使用此提供程序进行加密。

-pdf 节 web-app-physical-dir 对配置节进行解密。

-pc 容器 在 ContainerName 中创建一个 RSA 密钥对。可选参数:
[-size key-size] Key-size。默认值为 1024。
[-pku] 是用户容器而不是计算机容器。
[-exp] 使私钥可导出。
[-csp provider] 要使用的 Csp 提供程序。

-pz 容器 删除 ContainerName。可选参数:
[-pku] 是用户容器而不是计算机容器。

-pi 容器文件 从 XML 文件中导入一个 RSA 密钥对。可选参数:
[-pku] 是用户容器而不是计算机容器。
[-exp] 创建可导出的密钥。
[-csp provider] 要使用的 Csp 提供程序。

-px 容器文件 向 XML 文件导出一个 RSA 密钥对。可选参数:
[-pku] 是用户容器而不是计算机容器。
[-pri] 包括私钥。
[-csp provider] 要使用的 Csp 提供程序。

-pa 容器帐户 向容器中添加对帐户的访问。参数:
[-pku] 是用户容器而不是计算机容器。
[-csp provider] 要使用的 Csp 提供程序。
[-full] 添加完全访问(默认为读访问)。

-pr 容器帐户 从容器中移除对帐户的访问。参数:
[-pku] 是用户容器而不是计算机容器。
[-csp provider] 要使用的 Csp 提供程序。



-- 配置远程访问选项 --

-config+ 启用对配置的远程访问。

-config- 禁用对配置的远程访问。