收藏 分享(赏)

基于OPENSSL的小型CA 系统的实现.doc

上传人:wo7103235 文档编号:6253149 上传时间:2019-04-03 格式:DOC 页数:53 大小:581.50KB
下载 相关 举报
基于OPENSSL的小型CA 系统的实现.doc_第1页
第1页 / 共53页
基于OPENSSL的小型CA 系统的实现.doc_第2页
第2页 / 共53页
基于OPENSSL的小型CA 系统的实现.doc_第3页
第3页 / 共53页
基于OPENSSL的小型CA 系统的实现.doc_第4页
第4页 / 共53页
基于OPENSSL的小型CA 系统的实现.doc_第5页
第5页 / 共53页
点击查看更多>>
资源描述

1、I本科毕业论文(科研训练、毕业设计)题 目:基于 OPENSSL 的小型 CA系统的实现姓 名:学 院:软件学院系:软件工程专 业:软件工程年 级:学 号:指导教师: 职称: 年 月I摘 要为了确保网络时代的信息安全,应用最有效的安全技术来建立信息安全体系结构成为首先需要解决的问题。国际上提出了基于公钥基础设施(PKI,Public Key Infrastructure)作为标准的信息安全体系结构,现已被普遍采用。PKI 是目前网络安全建设的基础与重点,构架 PKI 体系核心的技术就是建立功能完善的、安全的认证中心(CA,Certificate Authority),而 OpenSSL 为之提

2、供了丰富的功能,支持多种标准。OpenSSL 是一个用标准 C 写的 SSL/TLS 实现, 该软件工具包包含了完整的加密算法、数字签名算法及证书管理等。本文主所做的工作就是对 PKI 的相关理论知识进行了阐述,对实体 CA,RA,客户端进行了功能上的实现,利用 OpenSSL 函数库中的证书和加密函数,从 X.509 数字证书格式出发,一步一步的阐述数字证书的制作过程和证书撤消列表的制作过程。另外,还对 CA 的证书管理、密钥管理、CRL 管理进行了详细的阐述。课题中开发出来的小型 CA 系统经过测试,能够支持 CA 的基本功能,包括根证书的产生和管理,用户证书的产生、颁发、回收、撤销等功能

3、。关键词:OpenSSL CA PKI 证书管理IIAbstractIn order to ensure the information security of the internet-oriented era, It is become the first issues to be addressed to establish an information security architecture using the most effective safety technology. The international community made a public key infras

4、tructure (PKI, Public Key Infrastructure) as a standard of information security architecture which is now being widely adopted. PKI is the foundation and keystone for building network security. It is the core technology for building PKI framework system that found a consummate, safe Certification Ce

5、nter (CA, Certificate Authority). And OpenSSL provide them with a wealth of function and support manifold standard. OpenSSL is a standard written in C SSL / TLS achieved, the software tool kit contains a complete encryption algorithm, the digital signature algorithm and certificate management.The di

6、ssertation discusses the related theory of PKI,realizes the function of entity CA、RA and client,utilizes certification and encryption functions in the OpenSSL function storehouse,through the X.509 standard,it elaborates certification and revocation list step by step. Besides these, the paper elabora

7、tes administration of certificate administration、 Key management、CRL administration in detail. The small CA system developed in the task meets the function of CA , such as the produce and management of Root Certificate , the produce , issue ,callback, revocation of the User Certificate. Keywords: Op

8、enssl CA PKI Certificate Administration III目 录第一章 绪论 11.1 课题背景及 研究意义 11.2 主要研究内容及特色 31.3 论文章节安排 3第二章 数字证书基础 42.1 数字证书 42.2 证书格式 42.3 CRL 格式 62.4 证书的存放 7第三章 CA 系统总体设计 .83.1 系统功能结构 83.2 CA 服务器端的设计 .93.2.1 CA 认证中心 .93.2.2 RA 注册审批机构 113.3 客户端 设计 113.4 CA 系统软件结构 .12第四章 CA 系统实现 144.1 CA 服务器端的实现 .144.1.1 数

9、字证书的实现过程 .144.1.2 制作证书撤销列表 .174.2 客户端的实现 204.3 CA 系统运行 .20第五章 结束语 .25致谢语 .26参考文献 . 27附录 28IVTable of ContentsChapter1 Introduction11.1 Background And Significance Of Task .11.2 Main Contents And Characteristics.31.3 Arrangement Of Chapter Dissertation.3Chapter2 The Basic Of Digital Certificates.42.1

10、 Digital Certificate.42.2 Certificate Format42.3 CRL Format 62.4 The Storage Of Certificate7Chapter3 Architectural Design Of CA System.83.1 The Functional Structure Of System83.2 The Design Of CA Server.93.2.1 Certification Authority Center93.2.2 Registration Authority.113.3 The Design Of Client 113

11、.4 The Software Structure Of CA System.12Chapter4 The Implementation of CA System144.1 The Implementation of CA Server.144.1.1 The Process Of Digital Certificates Implementation.144.1.2 Make Certificate Revocation Lists.174.2 The Implementation of Client.204.3 The Running Of CA System.20Chapter5 Con

12、clusions25Acknowledgements .26Reference . 27Supplement .281第一章 绪论1.1 课题背景及研究意义随着网络技术和信息技术的发展,电子商务已逐步被人们所接受,并在得到不断普及。但由于各种原因,国内电子商务的安全性仍不能得到有效的保障。在常规业务中,交易双方现场交易,可以确认购买双方的身份。利用商场开具的发票和客户现场支付商品费用,无须担心发生纠纷和无凭证可依。但通过网上进行电子商务交易时,由于交易双方并不现场交易,因此,无法确认双方的合法身份,同时交易信息是交易双方的商业秘密,在网上传输时必须保证安全性,防止信息被窃取;双方的交易非现场交

13、易,一旦发生纠纷,必须能够提供仲裁。因此,在电子商务中,必须从技术上保证在交易过程中能够实现身份认证、安全传输、不可否认性、数据完整性。在采用数字证书认证体系之前,交易安全一直未能真正得到解决。由于数字证书认证技术采用了加密传输和数字签名,能够实现上述要求,因此在国内外电子商务中,都得到了广泛的应用。为了确保网络时代的信息安全,应用最有效的安全技术来建立信息安全体系结构成为首先需要解决的问题。国际上提出了基于公钥基础设施(PKI,Public Key Infrastructure)作为标准的信息安全体系结构,现已被普遍采用。PKI 是“Public Key Infrastructure”的缩写

14、,意为“公钥基础设施” 。PKI 是一种完全符合 X509 标准的密钥管理平台,它能够为所有网络应用透明地提供采用加密和数字签名等密码服务所必需的密钥和证书管理。在 PKI 中,最关键的实体是数字证书,它提供网络上的身份证明。数字证书拥有者可以将其证书提供给其他人、Web 站点及网络资源,以证实他的合法身份,并且与对方建立加密的、可信的通信。证书还同时起着公钥分发的作用,每份证书都携带着持有人的公钥,签名证书携带的是签名公钥,信息加密证书携带的是信息加密公钥。所有实体的证书是由一个权威机构CA(Certificate Authority)发行的。CA是保证信息安全的关键。PKI 采用证书进行公

15、钥管理,通过第三方的可信任机构(认证中心,即 CA) ,把用户的公钥和用户的其他标识信息捆绑在一起,其中包括用户名和电子邮件地址等信息,以在 Internet 网上验证用户的身份。PKI 把公钥密码和对称密码结合起来,在Internet 网上实现密钥的自动管理,保证网上数据的安全传输。虽然基于各个不同的标准和应用场合 PKI 体系会有不同的结构,但是总体来说,作为可2靠的实体建立和保证信任关系的服务体系,在 PKIX 系列标准中 RFC2510(Internet X.509 Public Key Infrastructure-Certificate ManagementProtocol)定义了

16、 PKI 组件模型。PKI 体系机构内的主要组件包括:(1) 客户PKI 证书用户,否则被确定为最终实体;最终用户或系统,它们是 PKI 证书的主体;(2) 证书机构(CA)发行和撤销 PKI 证书(3) 注册机构(RA)确定公开密钥和证书持有者身份之间的连接(4) 资料库存储证书和证书撤消列表(certificate Revocation List,CRL)CRL 的系统;向最终实体提供证书和 CRL 的分发机制;PKI 组件及其相互之间的主要关系如图 1-1 所示:图 1-1 PKI 组件及其相互之间的主要关系其中各组件的流包括:操作事务、管理事务、证书和 CRL 公布。操作事务是包含在操

17、作协议文档中的消息交换,其提供证书、CRL 和其他管理与状态信息的优先传输。管理事务是管理协议文档中描述的消息交换,它提供通知服务,支持 PKI 内的管理事务或操作,用于向公开库分发证书和 CRL。本文的小型 CA 系统是利用 OpenSSL 来实现的。OpenSSL 是一个可以自由使用的 SSL 实现, 3其前身是 SSLeay, 由 Eric A. Young 和 Tim J. Hudson 于 1995 年开发, 它包含了一套程序以及函数库, 提供前端使用者 SSL 功能, 并且允许软件工程师将 SSL 模块与他们的程序结合, 其程序是一个指令列接口的程序, 它以手动的方式起始 SSL

18、连结, 重新导引与其它程序之间的资料输入以及输出。OpenSSL 是一个库, 它为类似安全 web 服务器这样的应用提供加密功能, 它包含一个可以用于执行加密功能的命令行工具。OpenSSL 不但实现了 SSL 的一些接口, 它所涵盖的内容从底层对称、非对称加密算法到建立在其上的 PKCS 的接口(包括 X.509 证书、PKCS 标准、ASN.1 等)的实现是一应俱全, 利用 OpenSSL 的源代码可以构建各种有关数据加密的应用和PKCS 接口。1.2 主要研究内容及特色本文主所做的工作就是对 PKI 的相关理论知识进行了阐述,对实体 CA,RA,客户端进行了功能上的实现,利用 OpenS

19、SL 函数库中的证书和加密函数,从 X.509 数字证书格式出发,一步一步的阐述数字证书的制作过程和证书撤消列表的制作过程。另外,还对 CA 的证书管理、密钥管理、CRL 管理进行了详细的阐述。课题中开发出来的小型 CA 系统经过测试,能够支持 CA 的基本功能,包括根证书的产生和管理,用户证书的产生、颁发、回收、撤销等功能。1.3 论文章节安排本文从 PKI 相关理论知识入手,实现了一个小型 CA 系统,全文共分五章,具体章节内容如下:第一章(绪论):主要讲述课题研究背景及意义,分析现有安全机制存在的问题,提出PKI 是解决网络中信息安全问题最全面的技术方案,并列举了本文所做的工作。第二章(

20、数字证书基础):讲述了数字证书的基本概念,介绍了相关的证书格式。第三章(CA 系统的总体设计):在 PKI 相关理论和实现技术的基础上给出了 CA 系统的总体设计方案。第四章(CA 系统的实现):介绍了整个 CA 系统服务器端和客户端功能的具体实现。主要讨论了 CA 对数字证书的制作过程以及 CRL 的制作过程。第五章(结论与展望):总结了本文所做的工作。4第二章 数字证书基础2.1 数字证书 数字证书是一种数字标识,可以说是 Internet 上的安全护照或身份证明。当人们到其他国家旅行时,用户护照可以证实其身份,并被获准进入这个国家。数字证书提供的是网络上的身份证明。数字证书是一个经证书授

21、权中心数字签名的包含公开密钥拥有者信息和公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循 ITUT X.509 国际标准。2.2 证书格式 在 Internet 网络中,应用程序使用的证书都来自不同的厂商或组织,为了实现可交互性,要求证书能够被不同的系统识别,符合一定的格式,并实现标准化。X.509 为证书及其CRL 格式提供了一个标准。但 X.509 本身不是 Internet 标准,而是国际电联 ITU 标准,它定义了一个开放的框架,并在一定的范围内可以进

22、行扩展。为了适应 PKI 技术的发展,IETF 也必须制定在 Internet 上使用 X.509 和 CRL 的标准。PKIX 工作组就提供了一个 Internet 草案“Part I: X.509 Certificate and CRL Profile“,用于定义在 Internet PKI 中使用 X.509 和 CRL 的方法和规范。该草案把 X.509作为标准,并对各标准项和扩展做了说明,基本接收了 X.509 作为 Internet 中的证书标准,但也定义了被 PKI 应用的 X.509 V3 和 CRL V2 标准格式的设置,这些设置包含了 PKIX 工作组对 X.509 所做的

23、一些新的扩展。X.509 目前有三个版本:V1、V2 和 V3,其中 V3 是在 V2 的基础上加上扩展项后的版本,这些扩展包括由 ISO 文档(X.509-AM)定义的标准扩展,也包括由其他组织或团体定义或注册的扩展项。X.509 由 ITU-T X.509(前身为 CCITT X.509)或 ISO/IEC 9594-8 定义,最早以 X.500 目录建议的一部分发表于 1988 年,并作为 V1 版本的证书格式。X.500 于 1993 年5进行了修改,并在 V1 基础上增加了两个额外的域,用于支持目录存取控制,从而产生了 V2版本。为了适应新的需求 ISO/IEC 和 ANSI X9

24、发展了 X.509 V3 版本证书格式,该版本证书通过增加标准扩展项对 V1 和 V2 证书进行了扩展。另外,根据实际需要,各个组织或团体也可以增加自己的私有扩展。X.509 V1 和 V2 证书所包含的主要内容如下:证书版本号(Version):版本号指明 X.509 证书的格式版本,现在的值可以为0、1、2,也为将来的版本进行了预定义。 证书序列号(SerialNumber):序列号指定由 CA 分配给证书的唯一的数字型标识符。当证书被取消时,实际上是将此证书的序列号放入由 CA 签发的 CRL 中,这也是序列号唯一的原因。 签名算法标识符(Signature):签名算法标识用来指定由 C

25、A 签发证书时所使用的签名算法。算法标识符用来指定 CA 签发证书时所使用的公开密钥算法和 hash 算法,须向国际知名标准组织(如 ISO)注册。 签发机构名(Issuer):此域用来标识签发证书的 CA 的 X.500 DN 名字。包括国家、省市、地区、组织机构、单位部门和通用名。 有效期(Validity):指定证书的有效期,包括证书开始生效的日期和时间以及失效的日期和时间。每次使用证书时,需要检查证书是否在有效期内。 证书用户名(Subject):指定证书持有者的 X.500 唯一名字。包括国家、省市、地区、组织机构、单位部门和通用名,还可包含 email 地址等个人信息等 证书持有者

26、公开密钥信息(subjectPublicKeyInfo):证书持有者公开密钥信息域包含两个重要信息:证书持有者的公开密钥的值;公开密钥使用的算法标识符。此标识符包含公开密钥算法和 hash 算法。 签发者唯一标识符(Issuer Unique Identifier):签发者唯一标识符在第 2 版加入证书定义中。此域用在当同一个 X.500 名字用于多个认证机构时,用一比特字符串来唯一标识签发者的 X.500 名字。可选。 证书持有者唯一标识符(Subject Unique Identifier):持有证书者唯一标识符在第2 版的标准中加入 X.509 证书定义。此域用在当同一个 X.500 名

27、字用于多个证书持有者时,用一比特字符串来唯一标识证书持有者的 X.500 名字。可选。 签名值(Issuers Signature):证书签发机构对证书上述内容的签名值。6X.509 V3 证书是在 v2 的基础上一标准形式或普通形式增加了扩展项,以使证书能够附带额外信息。标准扩展是指由 X.509 V3 版本定义的对 V2 版本增加的具有广泛应用前景的扩展项,任何人都可以向一些权威机构,如 ISO,来注册一些其他扩展,如果这些扩展项应用广泛,也许以后会成为标准扩展项。2.3 CRL 格式 证书废除列表 CRL(Certificate revocation lists,又称证书黑名单)为应用程

28、序和其它系统提供了一种检验证书有效性的方式。任何一个证书废除以后,证书机构 CA 会通过发布 CRL 的方式来通知各个相关方。目前,同 X.509 V3 证书对对应的 CRL 为 X.509 v2 CRL,其所包含的内容格式如下: CRL 的版本号:0 表示 X.509 V1 标准;1 表示 X.509 V2 标准;目前常用的是同 X.509 V3 证书对应的 CRL V2 版本。 签名算法:包含算法标识和算法参数,用于指定证书签发机构用来对 CRL 内容进行签名的算法。 证书签发机构名:签发机构的 DN 名,由国家、省市、地区、组织机构、单位部门和通用名等组成。 此次签发时间:此次 CRL

29、签发时间,遵循 ITU-T X.509 V2 标准的 CA 在 2049 年之前把这个域编码为 UTCTime 类型,在 2050 或 2050 年之后年之前把这个域编码为GeneralizedTime 类型。 下次签发时间:下次 CRL 签发时间,遵循 ITU-T X.509 V2 标准的 CA 在 2049 年之前把这个域编码为 UTCTime 类型,在 2050 或 2050 年之后年之前把这个域编码为GeneralizedTime 类型。 用户公钥信息,其中包括废除的证书序列号和证书废除时间。废除的证书序列号是指要废除的由同一个 CA 签发的证书的一个唯一标识号,同一机构签发的证书不会

30、有相同的序列号。 签名算法:对 CRL 内容进行签名的签名算法。 签名值:证书签发机构对 CRL 内容的签名值。另外,CRL 中还包含扩展域和条目扩展域。CRL 扩展域用于提供与 CRL 有关的额外信息部份,允许团体和组织定义私有的 CRL 扩展域来传送他们独有的信息;CRL 条目扩展域则提7供与 CRL 条目有关的额外信息部份,允许团体和组织定义私有的 CRL 条目扩展域来传送他们独有的信息。2.4 证书的存放 数字证书作为一种电子数据格式,可以直接从网上下载,也可以通过其他方式。使用 IC卡存放用户证书。即把用户的数字证书写到 IC 卡中,供用户随身携带。这样用户在所有能够读 IC 卡证书

31、的电子商务终端上都可以享受安全电子商务服务。 用户证书直接存放在磁盘或自己的终端上。户将从 CA 申请来的证书下载或复制到磁盘或自己的 PC 机或智能终端上,当用户使用自己的终端享受电子商务服务时,直接从终端读入即可。另外,CRL 一般通过网上下载的方式存储在用户端。8第三章 CA 系统总体设计3.1 系统功能结构CA 系统功能结构如图 3-1 所示:图 3-1 CA 系统架构首先,用户申请下载证书,然后在证书的申请过程中使用 SSL 安全方式与服务器建立连接,用户填写个人信息,浏览器生成私钥和公钥对,将私钥保存客户端特定文件中,并且要求用口令保护私钥,同时将公钥和个人信息提交给安全服务器。安

32、全服务器将用户的申请信息传送给注册机构服务器。注册机构 RA 申核后通过硬拷贝的方式向 CA 传输用户的证书申请与操作员的数字签名,CA 操作员查看用户的详细信息,并且验证操作员的数字签名,如果签名验证通过,则同意用户的证书请求,颁发证书。然后 CA 将证书输出。如果 CA 操作员发现签名不正确,则拒绝证书申请。93.2 CA 服务器端的设计开放网络上的电子商务要求为信息安全提供有效的、可靠的保护机制。这些机制必须提供机密性、身份验证特性、不可否认性。这就需要依靠一个可靠的第三方机构 CA 认证中心验证,所以,使用证书安全机制的前提是建立 CA 认证中心以及配套的 RA 注册审批机构系统。3.

33、2.1 CA 认证中心CA(Certification Authority)中心,又称为数字证书认证中心,作为电子商务交易中受信任的第三方,专门解决公钥体系中公钥的合法性问题。CA 中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户名称与证书中列出的公开密钥相对应。CA 中心的数字签名使得攻击者不能伪造和篡改数字证书。在数字证书认证的过程中,证书认证中心(CA)作为权威的、公正的、可信赖的第三方,其作用是至关重要的。认证中心就是一个负责发放和管理数字证书的权威机构。同样 CA 允许管理员撤销发放的数字证书,在证书撤销列表(CRL)中添加新项并周期性地发布这一数字

34、签名的 CRL。认证中心 CA 的主要功能有:(1) 接收并验证最终用户数字证书的申请;(2) 证书审批,确定是否接受最终用户数字证书的申请;(3) 证书签发,向申请者颁发、拒绝颁发数字证书;(4) 证书更新,接收、处理最终用户的数字证书更新请求;(5) 接收最终用户数字证书的查询、撤销;(6) 产生和发布证书废止列表(CRL) ,验证证书状态;(7) 提供 OCSP 在线证书查询服务,验证证书状态;(8) 提供目录服务,可以查询用户证书的相关信息;(9) 下级认证机构证书及帐户管理;(10) 数字证书归档;(11) 认证中心 CA 及其下属密钥的管理;(12) 历史数据归档。认证中心为了实现

35、其功能,主要由以下三部分组成:10(1) 注册服务器:通过 Web Server 建立的站点,可为客户提供每日 24 小时的服务。因此客户可在自己方便的时候在网上提出证书申请和填写相应的证书申请表,免去了排队等候等烦恼。(2) 证书申请受理和审核机构:负责证书的申请和审核。它的主要功能是接受客户证书申请并进行审核。(3) 认证中心服务器:是数字证书生成、发放的运行实体,同时提供发放证书的管理、证书撤销列表(CRL)的生成和处理等服务。证书管理模块是整个系统种最重要的一部分,也是本文主要实现的一部分。下图是证书管理模块功能图。各管理模块的主要功能分别如下图 3-2:图 3-2 证书管理模块功能图

36、1 用户管理CA 的用户管理只是完成属于自己 RA 用户信息的收集,完成用户的统一管理。2 证书管理证书管理主要包括用户证书管理和根证书管理两大部分。其中,根证书管理是整个系统安全的重点之一,如果根证书遭到破坏,整个系统将会崩溃。根证书要有严格的安全机制,还要进行备份,以便遭到破坏时能够及时恢复。要注意,在根证书备份的过程中,必须多人同时参与,任何一个管理员都不能独立完成备份过程,另外,如果是多级 CA 体系结构,下属各级 CA 证书也同样需要备份。根证书和各级 CA 证书都要存放在不与外界相连的机器上,最大限度的保证其安全性。用户证书管理主要功能是:11(1) 生成证书:对审核通过的申请生成

37、证书,并将证书存储到数据库中。密钥生成模式采用集中生成模式,即私钥/公钥对由 CA 产生。使用这种模式,是基于企业网和证书管理系统的特点考虑。可以便于 CA 管理密钥对,也方便用户,使用户不需要了解关于密钥对的知识。发布证书的信道并不非要是安全的,因为证书本身是一个自我保护的结构(含有 CA 的签名) 。私钥就需要通过绝对安全的渠道发布给用户。(2) 查询证书:便于管理员管理用户证书。3 CRL 管理CRL 管理主要功能是:将撤销审核通过的证书放入撤销证书库;定期生成 CRL 列表;CRL列表查询。4 密钥管理关于密钥,特别是私钥的托管,是目前一个争论的焦点。许多用户视私钥为个人隐私,不希望自

38、己的私钥被 CA 知道从而有可能被冒用,但是在很多场合,如管理部门需要在用户丢失私钥的情况下对己经由其对应公钥加密的有效交易进行监控,这也为权威中心托管用户私钥带来合理性。3.2.2 RA 注册审批机构RA(Registration Authority) ,数字证书注册审批机构。它是 PKI 信任体系的重要组成部分,是用户和 CA 认证中心之间的一个接口,是认证机构 CA 信任范围的一种延伸。注册机构 RA 接收用户的注册申请,获取并认证用户的身份,完成收集用户信息和确认用户身份的功能。RA 可以说是 CA 的代理,它负责证书申请者的信息录入、审核以及证书发放等工作,同时对发放的证书完成相应的

39、管理功能。对于一个规模较小的 CA 应用系统来说,可把注册管理的职能由认证中心来完成,而不设立独立运行的 RA,将 PKI 的注册功能作为认证中心的一项功能实现。但为了增强应用系统的安全,PKI 国际标准推荐由独立的 RA 来完成注册管理的任务,本系统为了方便调试,将 RA 的功能由 CA 来实现。3.3 客户端设计客户端功能主要由 RA 客户端提供。客户端具有的功能有:向终端实体提供证书申请服务、证书的审核、证书的撤销、证书的查询等,它在 RA 和 CA 之间起到一个桥梁的作用。作12为安全通信的接收端点,CA 客户端软件是一个全功能、可操作 PKI 的必要组成部分。客户端与服务器端的信息交

40、互可以通过在线方式或者离线(不通过网路,而通过其他安全的通信手段或直接与 CA 中心进行交互)两种方式完成。而此文中客户端软件主要针对在线方式设计。客户端子系统可以分为两个模块:证书申请模块和证书使用模块。证书申请模块是终端用户和 RA 子系统之间的交流工具;证书使用模块是终端用户使用证书的工具。3.4 CA 系统软件结构CA 系统软件结构设计图如图 3-3图 3-3 CA 系统软件设计图(1)ASN.1 数据机构:在国际性标准协议中,数据结构和消息都是采用 ASN.1 进行描述的,以保证数据类型的明晰。这里主要是负责将 ASN.1 描述的数据结构转化成编程语言所表示的内部数据结构。(2) 加

41、密软件包:用于实现密码算法(SHA1、RSA 等) ,用于屏蔽底层的加密模块,为上一层提供一个统一的函数调用接口,保证系统的相互独立性。(3) 加密卡:提供各种专用的密码算法及密钥管理函数。(4)I/O 操作:负责处理各种输入、输出操作,为缓存处理、日志处理以及其他操作提13供一个抽象的 I/O 接口。(5) 数据库 I/O:处理系统所需的各种数据库读写操作。(6) 文件 I/O:负责处理系统所需的各种文件输入、输出操作。(7)X.509 处理:生成和处理各种 X.509 标准的消息。(8) 证书 CRL:接收证书与 CRL 查询请求,从数据库中检索出符合条件的证书和最新的CRL,发送给用户。

42、(9) 密钥处理:提供基于口令的通过 USBKey 存取私钥的功能。(10)日志处理:提供证书和 CRL 的功能备份,以便在系统发生故障时,通过数据备份进行恢复。(11)证书处理:便于简化管理,对证书中各种数据的读取、查询等作为一个独立的模块。(12)通信接口:用于封装 TCP/IP 通信函数,为上层应用提供简易的通信接口。14第四章 CA 系统实现4.1 CA 服务器端的实现4.1.1 数字证书的实现过程结合在第二章已讨论过的 X.509 证书格式如图 4-1:图 4-1 X.509 证书格式对照 X.509 证书格式内容,给出了 X.509 证书的详细制作流程。如图 4-2:图 4-2 X

43、.509 证书制作流程151产生非对称密钥对数字证书的关键就是利用非对称密码学的原理,将公钥和一些具体的实体信息进行绑定与它配对的私钥联合使用,来达到数字证书广泛使用的目的。所以要制作数字证书就必须形成一对安全的密钥对。在密码学领域比较流行的非对称密钥算法是 RSA 算法,在 openssl 里,产生 RSA 密钥对的函数 RSA_generate_key 定义在文件 rsa_gen.c 中,如下:RSA*RSA_generate_key(int bits,unsigned long e_value,void(*callback)(int,int,void*),void*cb_arg)参数 b

44、its 是密钥的长度(如 1024) ,参数e_value 是 rsa 中公开的加密密钥,一般有 3,17 or 65537,常用 0x10001l,第三、四个参数为产生私钥过程中的回调函数,在一般应用中将它们置为 null 即可,结果返回一个 RSA结构。利用 RSA_generate_key 函数,创建密钥对的主要过程如下:EVP_PKEY*pNewRsaKey;/定义一个 EVP_PKEY 类型指针pNewRsaKey=EVP_PKEY_new()/给指针初始化,分配空间App_rand_load_files(char*file)/此函数的目的是导入随机数种子文件,这里可以建立一个包含两

45、三行以上的随机字符的文件,满足 RSA 算法需要的两个随机大素数。EVP_PKEY_assign_RSA(pNewRsaKey,RSA_generate_key(1024,0x10001,NULL,NULL)在具体应用中使用更高一层的 EVP_PKEY 结构,把 RSA 类型转化成更加通用的 EVP_PKEY类型,将密钥对保存在 pNewRsaKey 中。2证书申请根据 PKCS#10,openssl 的 X509 数字证书申请结构定义在 crypto/x509.h 中,如下所示,主要由两部分组成:(1) 证书请求信息结构 X509_REQ_INFOtypedef struct X509_re

46、q_info_stASN1_ENCODING enc;ASN1_INTEGER *version;X509_NAME *subject;X509_PUBKEY *pubkey;STACK_OF(X509_ATTRIBUTE) *attributes; 16 X509_REQ_INFO;该结构为证书申请信息主体,其中 version 表示版本,subject 为申请者信息,pubkey为申请者公钥信息,attributes 为可选的属性信息。该结构的 DER 编码接口在crytpo/asn1/x_req.c 中由宏实现,实现了 new、free、i2d 和 d2i 函数。为了获取证书的subje

47、ct 信息,CA 必须提供界面供用户输入国家(SzCountryName) 、省份、城市等信息,具体处理过程如下:X509_NAME*pSubjectName;pSubjectName=X509_NAME_new();X509_NAME_ENTRY*ent;Int nid;nid=OBJ_txt2nid(“countryName”);/查找标准证书中数据项“countryName”对应的整数值ent=X509_NAME_ENTRY_create_by_NID(NULL,nid,MBSTRING_UTF8,(unsignedchar*)SzCountryName,-1);X509_NAME_ad

48、d_entry(pSubjectName,ent,-1,0)通过以上过程的循环处理,可将输入的主题信息转化为 X509_NAME 的数据项。(2) 证书请求结构 X509_REQtypedef struct X509_req_stX509_REQ_INFO *req_info;X509_ALGOR *sig_alg;ASN1_BIT_STRING *signature;int references; X509_REQ;该结构为证书申请信息,req_info 为信息主体,sig_alg 为签名算法,signature 为签名值(申请者对 req_info 的 DER 编码值用自己的私钥签名)。该

49、结构的 DER 编码接口在crytpo/asn1/x_req.c 中由宏实现,实现了 new、free、i2d 和 d2i 函数。3. 制作 X.509 证书为了生成 X.509 证书,需要对上一步产生的请求证书作进一步的处理,如:添加版本号、证书的序列号、设置证书的有效开始时间和终止时间,在证书中放入用户的公钥,以及用17CA 的公钥对证书信息进行签名,具体步骤如下:X509*m_pClientCert;m_pClientCert=X509_new();X509_set_version(m_pClientCert,Versions)/设置版本号ASN1_INTEGER_set(X509_get_serialNumber(m_pClientCert),sn)/设置序列号X509_gmtime_adj(X509_get_notBefore(m_pClientCert),0)/设置开始时间X509_gmtime_adj(X509_get_notAfter(m_pClientCert),(long)60*60*24*days) /设置终止时间X509_set_subject_name(m_pClientCert,X509_REQ_get_subject_name(req)/设置主体名X509_set_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报