日期:2014-05-18  浏览次数:21026 次

PKI作业之证书加密导入导出C#操作

PKI作业之证书加密导入导出C#操作
2011年12月15日
   使用X.509数字证书加密解密实务(一)-- 证书的获得和管理
  一、       获得证书... 2
  1、        从CA获得... 2
  2、        从windows2003证书服务中获得... 2
  3、        使用makecert工具获得... 2
  二、       证书的保存... 2
  1、        保存在证书存储区... 2
  2、        以文件形式保存... 4
  2.1.       带有私钥的证书... 4
  2.2.       二进制编码的证书... 4
  2.3.       Base64编码的证书... 4
  3、        存储区中的证书跟证书文件相互转换... 4
  3.1.       使用工具相互转换... 4
  3.1.1    从证书文件导入证书存储区... 4
  3.1.2    从证书存储区导出为证书文件... 7
  3.2.       使用代码相互转换... 10
  3.2.1    从证书文件导入证书存储区... 10
  3.2.2    从证书存储区导出为证书文件... 11
  数字证书(也称作数字证书)将身份绑定到一对可以用来加密和签名数字信息的电子密钥。数字证书能够验证一个人使用给定密钥的权利,这有助于防止有人利用假密钥冒充其他用户。数字证书与加密一起使用,可以提供一个更加完整的解决方案,确保交易中各方的身份。
  一、  获得证书1、 从CA获得
  如果是商业应用最好从证书的签发机构CA获得证书,比如VeriSign,这样的大的CA签发的证书已经被一些系统默认为可信任的证书签发机构,它所签发的证书也是被信任的。但是这样的证书需要购买。
  如果不是商业应用,这里推荐一个可以免费申请证书的CA:www.cacert.org
  2、 从windows2003证书服务中获得
  在windows2003中安装证书服务器,windows2003服务器即可当做一个小型的CA,可以申请签发证书。
  3、 使用makecert工具获得
  微软在framework SDK中提供了一个生成X.509数字证书的命令行工具Makecert.exe。
  Makecert生成证书被保存到命令中指定的证书存储区。
  比如使用下面这个命令生成一个证书:
  makecert -sr CurrentUser -ss My -n CN=MyTestCert -sky exchange -pe
  参数说明:
  -sr CurrentUser  --      指定主题的证书存储位置。Location 可以是 currentuser(默认值)或 localmachine
  -ss My  --                   指定主题的证书存储名称,输出证书即存储在那里。My表示保存在“个人”
  -n CN=MyTestCert --    指定主题的证书名称。此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。
  -sky exchange --         指定颁发者的密钥类型,必须是 signature、exchange 或一个表示提供程序类型的整数。默认情况下,可传入 1 表示交换密钥,传入 2 表示签名密钥。
  -pe --                         将所生成的私钥标记为可导出。这样可将私钥包括在证书中。
  这个命令生成一个名字为MyTestCert的证书,被保存到了当前用户的个人证书存储区内。
  Makecert
  命令的详细说明请参看微软Makecert.exe工具的文档:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cptools/html/cpgrfcertificatecreationtoolmakecertexe.asp
  二、  证书的保存1、 保存在证书存储区
  Makecert命令生成的证书被保存在证书存储区。证书存储区是系统中一个特殊区域,专门用来保存X.509数字证书。
  可以在MMC的证书管理单元中对证书存储区进行管理。Windows没有给我们准备好直接的管理证书的入口。自己在MMC中添加,步骤如下:
  l         开始 à 运行 à MMC,打开一个空的MMC控制台。
  l         在控制台菜单,文件 à 添加/删除管理单元 à 添加按钮 à 选”证书” à 添加 à 选”我的用户账户” à 关闭 à 确定
  l         在控制台菜单,文件 à 添加/删除管理单元 à 添加按钮 à 选”证书” à 添加 à 选”计算机账户” à 关闭 à 确定
  完成后,在MMC控制台中有了两个MMC管理单元
  
  
  
  Figure 1.证书管理
  添加完证书管理单元后可以保存一下这个MMC控制台的设置,方便以后再次使用。在文件菜单中选“保存”,比如可以保存为“证书.msc”。
  这两个管理单元分别对应证书的两类存储位置:
  当前用户(CurrentUser) --  当前用户使用的 X.509 证书存储区。 
  本地计算机(LocalMachine) --  分配给本地计算机的 X.509 证书存储区。 
  每个存储位置下面的子目录代表证书的存储区,预设了以下存储区:
  AddressBook
  其他用户的 X.509 证书存储区。
  AuthRoot
  第三方证书颁发机构 (CA) 的 X.509 证书存储区。
  CertificateAuthority
  中间证书颁发机构 (CA) 的 X.509 证书存储区。
  Disallowed
  吊销的证书的 X.509 证书存储区。
  My
  个人证书的 X.509 证书存储区。
  Root
  受信任的根证书颁发机构 (CA) 的 X.509 证书存储区。
  TrustedPeople
  直接受信任的人和资源的 X.509 证书存储区。
  TrustedPublisher
  直接受信任的发行者的 X.5