`
conkeyn
  • 浏览: 1524384 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

使用X.509数字证书加密解密实务(一)-- 证书的获得和管理

阅读更多

源自:http://www.cnblogs.com/chnking/archive/2007/08/18/860983.html

 

一、       获得证书... 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

 

 

数字证书(也称作数字证书)将身份绑定到一对可以用来加密和签名数字信息的电子密钥。数字证书能够验证一个人使用给定密钥的权利,这有助于防止有人利用假密钥冒充其他用户。数字证书与加密一起使用,可以提供一个更加完整的解决方案,确保交易中各方的身份。

CA获得

如果是商业应用最好从证书的签发机构CA获得证书,比如VeriSign,这样的大的CA签发的证书已经被一些系统默认为可信任的证书签发机构,它所签发的证书也是被信任的。但是这样的证书需要购买。

如果不是商业应用,这里推荐一个可以免费申请证书的CAwww.cacert.org

windows2003证书服务中获得

windows2003中安装证书服务器,windows2003服务器即可当做一个小型的CA,可以申请签发证书。

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 --         指定颁发者的密钥类型,必须是 signatureexchange 或一个表示提供程序类型的整数。默认情况下,可传入 1 表示交换密钥,传入 2 表示签名密钥。

-pe --                         将所生成的私钥标记为可导出。这样可将私钥包括在证书中。

 

这个命令生成一个名字为MyTestCert的证书,被保存到了当前用户的个人证书存储区内。

Makecert

命令的详细说明请参看微软Makecert.exe工具的文档:

 

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.509 证书存储区。 

   

作为文件形式存在的证书一般有这几种格式:

 

Public Key Cryptography Standards #12PKCS#12标准定义,包含了公钥和私钥的二进制格式的证书形式,以pfx作为证书文件后缀名。

 

证书中没有私钥,DER 编码二进制格式的证书文件,以cer作为证书文件后缀名。

 

编码的证书

 

证书中没有私钥,BASE64 编码格式的证书文件,也是以cer作为证书文件后缀名。

 

Windows提供了内置的工具可以完成数字证书从文件形式导入到证书存储区,从证书存储区导出为证书文件的功能。

 

在资源管理器中,找到你要导入的证书文件,右键点击pfx或者cer格式的证书(这里以上面用makecert生成的MyTestCert证书为例),选择“安装”,证书导入向导:

 


Figure 2.
证书导入向导

 

下一步,显示要导入证书文件的路径,确认即可,再下一步。

如果是导入pfx含有私钥的证书,需要提供密码:

 


Figure 3.
导入pfx时需要密码

 

pfx证书含有私钥,在保存为证书文件时设置有私钥密码,以保护私钥的安全,所以这一步需要提供保存证书时设置的私钥密钥。

如果选择了“标识此密钥为可导出”,导入到证书存储区的证书以后还能导出含有私钥的证书,否则只能导出不含私钥的证书。

再下一步,如果是导入cer证书,导入向导开始后就直接到了这一步。

 


Figure 4.
选择证书存储区

可以根据证书的类型自动存放到合适的区域,也可以自己选择存储区,一般选个人存储区。

导入完成。查看证书管理中证书已经导入:

 


Figure 5.
查看导入的证书1

 

双击这个MyTestCert证书:

 


Figure 6.
查看导入的证书2

 

这是证书的具体信息,可以看见这个证书包含有私钥。如果导入的是cer证书,证书中不含有私钥的,那么这里不会显示有相应的私钥。

 

把上面导入到证书存储区的证书再导出为证书文件。

MyTestCert证书上点击右键 à 所有任务 à 导入,证书导出向导运行:

 


Figure 7.
证书导出向导

 

这里要导出的MyTestCert证书是含有私钥的证书,所以向导首先要求选择导出的证书是否连同私钥一同导出。如果选要导出私钥,下一步:

 


Figure 8.
含私钥pfx格式证书选项

 

选择导出含私钥的证书生成pfx格式的证书。这里是些导出pfx证书的选项。

如果选择了不导出私钥或者选择导出的证书本身就不含有私钥,那么这一步只能选不含私钥的证书格式(导入私钥的选项是暗的):

 


Figure 9.
不含私钥cer格式证书选项

 

这里是导出不含私钥证书的选项,一般导出为cer证书。

DER编码,就是导出的证书是二进制格式存储的证书。

Base64编码,就是把证书的二进制编码转成base64的编码后存储的证书。

 

下一步,如果是导出含私钥的证书,需要提供私钥保护密码:

 


Figure 10.
导出含私钥的证书需要私钥保护密码

 

下一步,提供证书文件的路径:

 


Figure 11.
指定导出证书的路径

 

导出证书完成。

 

除了使用windows提供的工具交互操作导入或者导出证书,也可以在程序中使用代码进行证书的导入和导出操作,以适应在应用系统中对证书进行操作的需求。

下面通过代码完成上面使用工具导入证书文件,然后把导入的证书导出为证书文件的的同样功能。

 

l       读取证书放入证书对象

Framework2.0myX509Certificate2类代表了证书。

 

//从证书文件载入证书,如果含有私钥的,需要提供保存证书时设置的密码

X509Certificate2 myX509Certificate2 = new X509Certificate2(

            @"C:\Samples\PartnerAEncryptMsg\MyTestCert.pfx",    //证书路径

            "password",     //证书的私钥保护密码

           

 

  • 大小: 14.3 KB
  • 大小: 9.7 KB
  • 大小: 6.9 KB
  • 大小: 6.9 KB
  • 大小: 14.7 KB
  • 大小: 9.3 KB
  • 大小: 6.4 KB
  • 大小: 9 KB
  • 大小: 9.2 KB
  • 大小: 5.7 KB
  • 大小: 5.7 KB
分享到:
评论

相关推荐

    使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据

    X.509标准定义了数字证书的格式,而RSA是一种广泛使用的非对称加密算法。本篇将深入探讨如何在实际应用中结合X.509数字证书与RSA算法来加密解密较长的数据,同时利用对称加密技术提高效率。 首先,X.509数字证书...

    X.509数字证书

    **X.509数字证书详解** X.509是一种国际标准,定义了公钥证书的格式,用于在开放的网络环境中验证身份。这个标准由国际电信联盟电信标准部门(ITU-T)的X系列建议制定,编号为X.509。X.509证书是网络安全体系中的...

    KeyTool 工具生成X.509证书

    KeyTool工具生成X.509证书是Java平台自带的一个命令行工具,它主要用于管理和操作密钥对(公钥和私钥)以及数字证书。在本文中,我们将深入探讨KeyTool的基本用法、X.509证书的概念,以及如何使用KeyTool生成这种...

    x.509 证书说明书

    总结,X.509 证书在互联网安全中扮演着至关重要的角色,通过标准化的身份验证和加密机制,为用户提供了一种可靠的方式来保护他们的数据和隐私。理解和正确使用X.509证书对于维护网络安全至关重要。

    c语言写成的取x.509证书公钥

    在IT行业中,X.509证书是一种广泛用于身份验证的标准格式,特别是在网络安全和SSL/TLS协议中。这种证书包含了公钥基础设施(PKI)中的关键信息,如发行者的身份、持有者的身份以及公钥。C语言作为一种底层、高效的...

    X.509证书属性的访问

    X.509是一种由国际电信联盟(ITU)制定的标准,用于定义公钥基础设施(PKI)中的数字证书和证书撤销列表(CRL)。本文将深入探讨如何使用Java语言访问X.509格式证书的不同属性,以及这些属性的具体含义。 ### X.509...

    X509数字证书结构和实例

    X.509 数字证书是一种常用的数字证书格式,用于身份验证和加密通信。在本文中,我们将详细分析 X.509 数字证书的内部结构和编码方式,以帮助读者更好地理解 X.509 格式。 一、X.509 数字证书的编码 X.509 数字证书...

    FileEncryption.rar C#文件加密解密

    本文将详细探讨如何使用C#实现文件的加密和解密,以及涉及到的相关知识点。 1. **基础概念** - **加密**:加密是一种将明文转换为密文的过程,目的是保护数据不被未经授权的人员读取。常见的加密算法有对称加密...

    x.509-rfc2459.zip

    5. **证书策略和管理**:定义证书的生命周期、使用和撤销规则。 **RFC 2459** RFC 2459文档详细描述了X.509v3证书的结构和语法,包括如何编码证书中的各项信息,以及如何处理可选扩展。此文档为实现PKI系统提供了...

    x509_public_key.rar_X.509_x509

    这个C语言源文件可能包含了实现X.509证书中的公钥操作的代码,比如加载证书、解码公钥、验证签名以及使用公钥进行加密和解密等。 6. **安全性**: - 证书应安全存储,防止泄露,私钥尤其需要保护,因为一旦泄露,...

    基于X.509标准的CA数字证书系统的设计与实现(修改稿)

    《基于X.509标准的CA数字证书系统的设计与实现》 数字证书在现代网络安全中扮演着至关重要的角色,特别是在公共密钥基础设施(PKI)中。PKI是一种架构,旨在通过认证、授权和加密服务确保网络环境的安全。X.509标准...

    基于X.509标准的CA数字证书系统的设计与实现

    综上,基于X.509标准的CA数字证书系统设计与实现是一个复杂而关键的过程,它涉及到身份认证、加密解密、签名验证等多个环节,对于构建安全的网络环境至关重要。通过理解和应用这些知识点,可以有效地提升网络服务的...

    bcprov-jdk15on-1.47.jar Java 加密 解密 jar包

    bcprov-jdk15是Bouncy Castle针对Java 1.5及更高版本的一个组件,它包含了各种加密功能,如RSA、AES、DES等,以及PKCS#7、X.509证书和SSL/TLS协议的支持。 **bcprov-jdk15on-1.47.jar的内容** bcprov-jdk15on-1.47...

    bcprov-ext-jdk15on-1.54.jar和bcprov-jdk15on-1.54.jar压缩文件

    开发者可以使用它来实现基本的加密需求,如加解密、数字签名验证等。 bcprov-ext-jdk15on则是bcprov-jdk15on的一个扩展版,它除了包含bcprov-jdk15on的所有功能外,还额外提供了一些高级特性和非标准算法。比如,...

    JAVA使用数字证书加密文件

    4. CER(Certificate)文件是X.509证书的标准格式,包含公钥和证书信息,通常是DER编码,一种二进制编码方式。 在Java中,处理这些证书通常涉及以下步骤: 1. 导入证书:使用KeyStore类来管理证书和密钥。`...

    Web Services Security X.509 Certificate Token Profile

    X.509是一种用于公钥基础设施(Public Key Infrastructure, PKI)中的数字证书标准,由ITU-T(国际电信联盟电信标准化部门)制定。这种证书包含了公钥持有者的身份信息以及公钥本身的信息,通过CA(Certificate ...

    UnSHc, UnSHc如何解密 SHc *.sh.x 加密文件?.zip

    UnSHc, UnSHc如何解密 SHc *.sh.x 加密文件? UnSHcUnSHc - 如何解密 SHc *.sh.x 加密文件?请注意我不会给任何人解密任何文件。 GitHub上的问题只是讨论 Bug 和/或者工具"unshc"的改进。如果你认为你找到了一个 Bug...

    X.506证书 509 588证书 很全 有效期10年

    X.509证书是公钥基础设施(PKI)中的核心组成部分,用于验证...这个压缩包提供的资源对于理解X.509证书及其在SSL/TLS中的应用具有很高的价值,无论是对个人还是企业,正确管理和使用这些证书都是维护网络安全的关键。

Global site tag (gtag.js) - Google Analytics