machineKey 元素(ASP.NET 设置架构)

更新:2007 年 11 月

对密钥进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证。

configuration 元素(常规设置架构)
  system.web 元素(ASP.NET 设置架构)
    machineKey 元素(ASP.NET 设置架构)

<machineKey 
  validationKey="AutoGenerate,IsolateApps" [String]
  decryptionKey="AutoGenerate,IsolateApps" [String]
  validation="SHA1" [SHA1 | MD5 | 3DES | AES]
  decryption="Auto" [Auto | DES | 3DES | AES]
/>

属性和元素

下面几部分描述了属性、子元素和父元素。

属性

属性

说明

decryption

可选的 String 属性。

指定用于对数据进行解密的哈希算法的类型。

此属性可以具有下列值之一。

说明

Auto

指定 ASP.NET 基于配置设置来确定使用哪个解密算法。这是默认 machineKey 解密值。

AES

指定 ASP.NET 使用 AES (Rijndael) 算法来对数据进行解密。AES 是用于对数据进行解密的默认算法。

3DES

指定 ASP.NET 使用 TripleDES 算法来对数据进行解密。TripleDES (3DES) 算法使用 DES 算法的三次连续迭代。

DES

指定 ASP.NET 使用数据加密标准 (DES) 算法来解密数据。

说明:

此属性是 .NET Framework 2.0 版中的新属性。

decryptionKey

必选的 String 属性。

指定用于对数据进行加密和解密的密钥或者生成该密钥的进程。当 validation 设置为 TripleDES 字段时,该属性用于 Forms 身份验证加密和解密以及视图状态加密。

decryptionKey 值的 IsolateApps 修饰符指示 ASP.NET 使用应用程序的 ID 为每个应用程序生成唯一的加密密钥。IsolateApps 作为一部分包含在默认值中。

如果您需要在 Web 服务器网络(网络场)中支持配置,请手动设置此属性以确保配置保持一致。

此属性可以具有下列值之一。默认值为 AutoGenerate,IsolateApps。

说明

AutoGenerate, IsolateApps

AutoGenerate 修饰符指定 ASP.NET 生成随机密钥并将其存储在本地安全机构 (LSA) 中。IsolateApps 修饰符指定 ASP.NET 使用应用程序 ID 为每个应用程序生成唯一的加密密钥。这是默认值。

指定一个手动分配的密钥。该值必须手动设置为十六进制字符串,以确保配置在整个网络场中保持一致。使用 DES 加密时,密钥长度应该为 16 个十六进制字符;而使用三重 DES (3DES) 或 AES 加密时,密钥长度应该为 48 个十六进制字符。如果要使用长度小于最大长度的密钥,则应通过真正的随机方式(例如,通过使用 RNGCryptoServiceProvider 类)来创建这些密钥。只有在计算机使用 128 位加密的情况下,ASP.NET 才能使用三重 DES。

validation

必选的 MachineKeyValidation 属性。

指定用来验证数据的加密类型。

此属性可以具有下列值之一。默认值为 SHA1。

说明

AES

指定 ASP.NET 使用 AES (Rijndael) 算法来验证数据。

MD5

指定 ASP.NET 使用 Message Digest 5 (MD5) 哈希算法来验证数据。此算法的性能比 SHA1 好。

SHA1

指定 ASP.NET 使用 SHA1 哈希算法来验证数据。使用此算法可增强安全性。

这是默认值。

3DES

指定 ASP.NET 使用 TripleDES 算法来验证数据。TripleDES 算法使用 DES 算法的三次连续迭代。

validationKey

必选的 String 属性。

指定用于验证加密数据的密钥。当 enableViewStateMAC 为 true 时,validationKey 用于创建消息身份验证代码 (MAC),以确保视图状态未被篡改。validationKey 还可用于生成进程外、应用程序特定的会话 ID,以确保每个会话具有独立的会话状态变量。

validationKey 值的 IsolateApps 修饰符指示 ASP.NET 使用应用程序的 ID 为每个应用程序生成唯一的加密密钥。IsolateApps 作为一部分包含在默认值中。

如果您需要在 Web 服务器网络(网络场)中支持配置,请手动设置 validationKey 属性以确保配置保持一致。

此属性可以具有下列值之一。默认值为 "AutoGenerate,IsolateApps"。

说明

AutoGenerate, IsolateApps

AutoGenerate 修饰符指定 ASP.NET 生成随机密钥并将其存储在本地安全机构 (LSA) 中。IsolateApps 修饰符指定 ASP.NET 使用应用程序 ID 为每个应用程序生成唯一的加密密钥。这是默认值。

指定一个手动分配的密钥。该值必须设置为十六进制字符串,以确保配置在整个网络场中保持一致。使用 DES 加密时,密钥长度应该为 16 个十六进制字符;而使用三重 DES (3DES) 或 AES 加密时,密钥长度应该为 48 个十六进制字符。如果要使用长度小于最大长度的密钥,则应通过真正的随机方式(例如,通过使用 RNGCryptoServiceProvider 类)来创建这些密钥。只有在计算机使用 128 位加密的情况下,ASP.NET 才能使用三重 DES。

子元素

无。

父元素

元素

说明

configuration

指定公共语言运行库和 .NET Framework 应用程序所使用的每个配置文件中均需要的根元素。

system.web

指定配置文件中 ASP.NET 配置设置的根元素,并且包含各种配置元素,这些元素配置 ASP.NET Web 应用程序并控制这些应用程序的行为方式。

备注

下面的代码示例演示如何将 validationKey 和 decryptionKey 属性都设置为 AutoGenerate。并且,指定了 isolateApps 值,以便为服务器上的每个应用程序生成一个唯一的密钥。

<machineKey 
   validationKey="AutoGenerate,IsolateApps" 
   decryptionKey="AutoGenerate,IsolateApps" 
   validation="SHA1"
/>

元素信息

配置节处理程序

MachineKeySection

配置成员

MachineKey

可配置的位置

Machine.config 文件

根级 Web.config 文件

应用程序级 Web.config 文件

要求

Microsoft Internet 信息服务 (IIS) 5.0、5.1 或 6.0

.NET Framework 版本 1.0、1.1 或 2.0

请参见

任务

演练:使用受保护的配置加密配置信息

如何:使用位置设置配置特定目录

如何:锁定 ASP.NET 配置设置

概念

保护角色

保证成员资格的安全

保证配置文件属性的安全

保护会话状态

ASP.NET 配置文件层次结构和继承

保证 ASP.NET 配置的安全

ASP.NET 配置方案

参考

system.web 元素(ASP.NET 设置架构)

configuration 元素(常规设置架构)

System.Configuration

System.Web.Configuration

MachineKeySection

MachineKey

其他资源

常规配置设置 (ASP.NET)

ASP.NET 配置设置

管理 ASP.NET 网站

ASP.NET 配置 API