WCF有很多值得学习的地方,这里我们主要介绍如何生成WCF证书,包括介绍WCF证书中都包含些什么秘密等方面。X.509 是由国际电信联盟(ITU-T)制定的数字证书标准,相信这是人尽皆知的了,目前X.509证书据我所知有三个版本,.net中使用的是 x.509-2,X.509-2 版引入了主体和签发人唯一标识符的概念,以解决主体和/或签发人名称在一段时间后可能重复使用的问题,x509-2(以下简称x509)证书由两把钥匙组成,通常称之为密钥对,公钥加密,私钥解密。今天我想在这里对x509进行一个深入的介绍和了解,因为在证书的安全体系中,x509证书应用是非常频繁的,或者说是不可缺少的。
1、如何生成WCF证书?
#T#微软提供的Makecert.exe测试WCF证书生成工具可以很好的帮助我们得到一个x509标准证书,具体方法如下:下载Makecert.exe或者定位到你的计算机目录:C:Program FilesMicrosoft SDKsWindowsv6.0Abin下,找找就看见了,我强烈建议你copy Makecert.exe到一个单独的目录中,如copy到D:cers。
现在点击开始菜单-运行-输入cmd,运行控制台应用程序,定位到D:cers,在控制台输入:makecert -r -pe -$ individual -n “CN=mailSecurity” -sky exchange -sr currentuser -ss my mailSecurity.cer,即可在当前用户证书存储区下的个人区中生成一个名为mailSecurityr的x509证书,并在当前目录输出了证书文件mailSecurity.cer,以下简单介绍一下各种参数意义,更复杂的参数请参考:证书创建工具帮助makecert 证书工具名
-r表示即将生成的证书是自我签署的,自己给自己发奖(这里主要是指颁发机构)
-pe表示将所生成的私钥标记为可导出。这样可将私钥包括在证书中
-$证书是个人用还是商用(individual/commercial)老美就是搞啊,这玩意用美元符号还真是形象得很。
-n表示证书主题,你就当它是标题吧,不管你取什么名字,必须包含CN=前缀
-sky指定主题的密钥类型,必须是 signature、exchange 或一个表示提供程序类型的整数。默认情况下,可传入 1 表示交换密钥,传入 2 表示签名密钥
-sr指定主题的证书存储位置。Location 可以是 currentuser(默认值)或 localmachine(实际是必须是这两个中的一个值)
-ss指定主题的证书存储名称,输出证书即存储在那里
mailSecurity.cer 证书名称,不必与主题一致,不过建议你还是致的好。通过在开始菜单-运行-输入mmc可以选择证书单元来查看和管理证书,通过微软的提供的certmgr.exe证书管理工具也可管理证书,和 makecert.exe在同一目录,使用相当简单,双击就可了,当然你还可以通过命令行模式来运行它,在微软的很多批处理文件中就很好的体现了这一点,具体使用参见:证书管理器工具
2、WCF证书中都包含些什么秘密?
首先我们必须知道的是:微软提供的证书生成工具给我们准备了两种密钥算法(MD5/SHA1)我们可以在生成证书的时候指定,如果没有指定,则默认使用MD5算法。但是我当我用SHA1算法生成证书的时候,奇怪的事情发生了,看下图。
WCF安全之X509证书