部署和操作 Enterprise Library 加密应用程序块
本文维护在:http://wiki.entlib.net.cn/EntlibHelp31CryptographyApplicationBlock.ashx
管理员的需要确认加密应用程序块的初始部署是有计划且可管理的,以及确认后来的部署更新仅对已存在的使用应用程序块的应用程序产生最少的影响。本主题将解决这些和其他管理主题:
- 部署加密应用程序块
- 更新加密应用程序块
- 度量加密应用程序块
部署加密应用程序块
加密应用程序块以多个程序集组成。每个属于加密应用程序块的程序集都有一个以 Microsoft.Practices.EnterpriseLibrary.Security.Cryptography 开头的文件名。另外,应用程序块依赖于通用程序集和 ObjectBuilder 子系统。使用加密应用程序块的应用程序可以部署在下列二个配置的任意一个中:
- 部署为在应用程序文件夹层次中的私有程序集。
- 部署为任意文件系统位置或者在全局程序集缓存中做为共享程序集。
部署加密应用程序块为私有程序集
如果应用程序没有使用来自全局程序集缓存中的可用服务,加密应用程序块就可能被部署在应用程序目录结构中。这简化了部署,因为在目标机器上可以使用 xcopy 命令来安装整个应用程序,包含加密应用程序块程序集。如果在同一计算机上的多个应用程序使用加密应用程序块,可以在每个应用程序目录层次中安装一个程序集 的副本。这允许每个应用程序的程序集副本可以被单独更新。关于强命名 Enterprise Library 程序集的信息,请参见强命名 Enterprise Library 程序集。
部署加密应用程序块为共享程序集
可以签名一个强名称到加 密应用程序块程序集。在 Visual Studio .NET 和 .NET Framework SDK 中都包含有进行强命名的工具。在程序集被强命名后,它们就可以被部署在一个共享的位置并由多个应用程序使用。可以选择部署程序集在任何文件系统位置,并在 每个使用加密应用程序块的应用程序的配置文件中添加 <codebase> 元素以指定程序集的位置。
更多类似的场景是在全局程序集缓存部署共享程序集。在此场景中,所有在计算机上的应用程序都可以使用程序集而不用进行任何附加的配置。可以使用下列工具之一来在全局程序集缓存中安装一个程序集:
- 一个安装程序,如 Microsoft Windows Installer, version 2.0
- 全局程序集缓存工具命令行实用程序( Gacutil.exe )
- .NET Framework 配置工具 ( Mscorcfg.msc )
分发密钥
图 1 示例了由应用程序块支持的管理和分发密钥的过程。在 Computer A 中,使用配置控制台来读取保存在一个文件中的已加密的密钥。配置控制台依赖于加密应用程序块来完成此事情。应用程序块使用 DPAPI 来在内存中解密密钥,然后使用配置控制台的加密密钥向导显示出来(如果没有使用向导来编辑密钥,它将在内存中保持加密)。当导出密钥到一个文件中时,应用 程序块使用提供的密码和一个随机生成的熵值来加密密钥。传输包含密钥的文件到 Computer B 中,然后使用配置控制台来从文件中导入密钥。在保存应用程序配置时,配置控制台使用应用程序块来用 DPAPI 加密密钥,并将它保存到一个本地文件中。
密钥分发 |
配 置控制台在配置源中的 <securityCryptographyConfiguration> 节中保存每个密钥文件的绝对路径。例如,如果使用的是默认配置源,应用程序配置文件将包含密钥文件的绝对路径。如果要将应用程序部署到另一计算机上,必须 部署密钥文件到同样的绝对路径中或者更新计算机上的配置源的 <securityCryptographyConfiguration> 节以反映新的位置。
更新加密应用程序块
如果加密应用程序块的一个更新版本可通知,可以安装更新的版本,然后所有应用程序都可以使用更新的程序集。然而,如果更新的版本引起某些应用程序的兼容问题,可以安装更新版本到全局程序集缓存中并配置某些应用程序使用更新后的版本,而其他的继续使用以前的版本。
更新私有程序集
如果加密应用程序块的程序集被部署为私有程序集,就可以用更新的 DLL 简单的替换掉应用程序文件夹层次中的早期版本的 DLL 来部署升级。
更新共享程序集
升级共享配置中的加密应用程序块最容易的方法是安装更新的 DLL 到全局程序集缓存中。默认的,通用语言运行时会尝试加载最后的构建和版本号,且与应用程序构建使用的程序集有着同样的主和次版本号的程序集。因此,如果主 版本号和次版本号没有改变,添加更新版本到全局程序集缓存中并自动更新所有引用加密应用程序块程序集的应用程序。
度量加密应用程序块
这是在应用程序配置文件中的用于开启/关闭度量的节。它们是可选的,但是在文件中必须同时出现或者同时不出现。如果忽略它们,这将与所有值都是 false 一样。<configSections> 节是指定 System.Configuration 库如果读取真实配置数据的地方。真实数据在 <instrumentationConfiguration> 节中。设计一个值为 true 以打开度量,设置值为 false 将关闭度量。三种度量为性能计数器、事件日志和 WMI 事件。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="instrumentationConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Common.Instrumentation.Configuration.InstrumentationConfigurationSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.9.9.0, Culture=neutral, PublicKeyToken=null" /> </configSections> <instrumentationConfiguration performanceCountersEnabled="true" eventLoggingEnabled="true" wmiEnabled="true" /> </configuration>
加密应用程序块性能计算器
表1 描述了加密应用程序块的性能计数器。
性能计数器 | 描述 |
---|---|
Hash Comparisons/sec | 哈希比较执行的速率。 |
Hash Mismatches/sec | 检测到的未匹配的哈希比较的速率。 |
Hash Operations/sec | 哈希纯文本的速率。 |
Symmetric Decryptions/sec | 执行对称解密的速率。 |
Symmetric Encryptions/sec | 执行对称加密的速率。 |
速率示例了随着时间的事件的增长数量,并按时间分割值的改变,以显示活动的速率。关于性能计数器的更多信息,请参见 MSDN 上的 .NET Framework 类库中的 PerformanceCounterType Enumeration 。
加密应用程序块事件日志实体
表1列出了加密应用程序块的事件日志实体。监听器列是触发事件的类,事件列是事件的名称,异常列是异常的布尔值,主消息列是主要的错误消息,其他列是可用的任何其他信息。
监听器 | 事件 | 异常 | 主消息 | 其他 |
---|---|---|---|---|
SymmetricAlgorithmInstrumentationListener | CryptographicOperationFailed | true | 使用实例实例名时发生错误。 | 解密操作失败。 |
SymmetricAlgorithmInstrumentationListener | CryptographicOperationFailed | true | 使用实例实例名时发生错误。 | 加密操作失败。 |
HashAlgorithmInstrumentationListener | CryptographicOperationFailed | true | 使用实例实例名时发生错误。 | 哈希比较失败。 |
HashAlgorithmInstrumentationListener | CryptographicOperationFailed | true | 使用实例实例名时发生错误。 | 哈希创建失败。 |
DefaultCryptographyEventLogger | ConfigurationFailure | true | 使用实例实例名时发生错误。 | 为哈希算法实例实例名获取配置时出错。 |
DefaultCryptographyEventLogger | ConfigurationFailure | true | 使用实例实例名时发生错误。 | 为对称算法实例实例名获取配置时出错。 |
加密应用程序块 WMI 事件
加密应用程序块由下列 WMI 事件度量:
- HashOperationFailedEvent
- HashMisMatchDetectedEvent
- SymmetricOperationFailedEvent
- CryptograhyConfigurationFailureEvent
下列表格描述了每个 WMI 事件的属性。
表1描述了 HashOperationFailedEvent WMI 事件的属性
WMI 属性 | 描述 |
---|---|
ExceptionMessage | 在哈希失败时触发的异常的消息 |
ErrorMessage | 描述哈希操作时如何失败的消息。 |
InstanceName | 遭受失败的哈希提供程序的 ID ,就是在配置文件中指定的。 |
UtcTimeStamp | 哈希操作失败的时间 |
表 2 描述了 HashMisMatchDetectedEvent WMI 事件的属性
WMI 属性 | 描述 |
---|---|
InstanceName | 检测到未匹配的哈希提供程序的 ID ,就是在配置文件中指定的名称。 |
UtcTimeStamp | 未匹配检测到的时间。 |
表 3 描述了 SymmetricOperationFailedEvent WMI 事件的属性
WMI 属性 | 描述 |
---|---|
ExceptionMessage | 当对称操作失败时触发的异常的消息。 |
ErrorMessage | 描述对称操作是如何失败的消息。 |
InstanceName | 遭受失败的对称提供程序的 ID ,即在配置文件中指定的名称。 |
UtcTimeStamp | 对称操作失败的时间。 |
表 4 描述了 CryptographyConfigurationFailureEvent WMI 事件的属性
WMI 属性 | 描述 |
---|---|
ExceptionMessage | 当试图创建或配置加密提供程序失败时触发的异常的消息。 |
InstanceName | 无法创建或配置的加密提供程序的 ID ,即在配置文件中指定的名称。 |
UtcTimeStamp | 配置失败发生的时间。 |
转载于:https://www.cnblogs.com/doriandeng/archive/2007/11/13/958502.html
部署和操作 Enterprise Library 加密应用程序块相关推荐
- Enterprise Library—缓存应用程序块
Enterprise Library缓存应用程序块 前言 在介绍Cache Application Block之前,我们现了解一下缓冲存储.缓冲存储分为内存驻留型缓冲和磁盘驻留型缓冲. 1)内存驻留型 ...
- 7.1.1 [Enterprise Library]缓存应用程序块场景和目标
缓存应用程序块为解决开发人员在缓存数据时所面对的绝大多数任务而设计.这些任务根据场景进行了组织,每个场景都给出了一个真实世界情况的示例,如添加条目到缓存,讨论了情况所需要的缓存功能,并展示了完成任务的 ...
- Enterprise Library 缓存应用程序块快速入门
Enterprise Library 快速入门是简单的.易于理解的应用程序块关键特性的示例,使用了一个实现了常规场景的漫游集合来说明这些特性. 如果要理解一个应用程序块,快速入门将是理想的起始点,并且 ...
- 扩展和修改 Enterprise Library 缓存应用程序块
在它的原始状态中,缓存应用程序块在典型的缓存情况下工作得很好,然而,许多时候你不得不定制应用程序块的某些行为以更好的适用于应用程序的特定环境.在此有二种方法可以用来定制:扩展和修改. 扩展应用程序块 ...
- Enterprise Library 4.0简介及改进
Enterprise Library简介 Enterprise Library 4.0 – May 2008是Microsoft patterns & practices Enterprise ...
- Enterprise Library 2.0 Hands On Lab 翻译(14):加密应用程序块(一)
练习1:加解密字符串 通过本练习将学习通过加密来保护信息,在这里创建一个类似于IM的聊天应用程序,加密通信过程中的信息. 第一步 打BugSmak.sln项目,默认的安装路径应该为C:\Program ...
- Enterprise Library 4 数据访问应用程序块
Enterprise Library 数据访问应用程序块简化了实现常规数据访问功能的开发任务.应用程序可以在各种场景中使用此应用程序块,例如为显示而读取数据.传递数据穿过应用程序层( applicat ...
- Enterprise Library 4 缓存应用程序块的设计
缓存应用程序为以下目的而设计: 提供一个大小可管理的 API 集合. 允许开发人员添加标准的缓存操作到他们的应用程序中,而不用学习应用程序块的内部工作. 用 Enterprise Library 配置 ...
- Enterprise Library Step By Step系列(一):配置应用程序块——入门篇
写在前面: 最近准备写Enterprise Library Step By Step的系列文章,对于每一个应用程序块,我都会用入门篇,进阶篇,剖析篇三篇文章去写. 在入门篇里会详细介绍应用程序块的使用 ...
最新文章
- c语言程序计算bmi指数,计算BMI的程序怎么写
- Java RMI详解
- Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改--转载
- MySQL数据库SYS CPU高的可能性分析
- virtual析构函数的作用?
- zabbix的入门到精通之zabbix的触发器Trigger
- 进程 线程 多进程 多线程 父进程 子进程
- 如何在win下使用linux命令
- Asp.net开发之旅--简单的引用母版页
- 小红书再度出拳整治医美 首批处置违规笔记27.9万篇
- O-矩阵相乘-Warshall算法详解
- Spring Framework 4.0 M1: WebSocket 支持
- Centos7---1708 Linux上安装ZooKeeper 以及JDK1.8安装
- 微信小程序直播电脑端OBS推流直播教程
- 解决 Office 2007/2010 安装错误:1402
- python 代码生成器_Python代码生成器(代码生成工具)V1.1 正式版
- iPad横竖屏代码适配
- 61_ZYNQ7020开发板_SD/QSPI方式启动_ax_peta
- 年轻人能为世界做什么
- 简述计算机程序执行过程,计算机程序的执行过程
热门文章
- mysql数据库在工控自动化应用_robotframework自动化系列:操作mysql数据库
- android都图片mat_普通Android码农,该如何逆袭月薪5W的移动端架构师?
- php oracle 大字段,php oracle数据库clob和nclob字段
- java的字符串池_翻译-Java字符串池
- c语言编程作业 一哥是何人,PLC编程语言之争:谁才是quot;一哥quot;-简易百科
- 南京信息工程大学计算机等级考试代码,南京信息工程大学2016下半年计算机等级考试报名...
- oracle内连接时列的值是null,Oracle SQL - 比较空值时的JOIN性能
- C ++ stringstream –参考和使用指南
- java java se_Java SE 9:不可变集的工厂方法
- 找工作?最容易遇到的Java面试题