论文部分内容阅读
摘要: 证书中心是信息安全保障的重要基础设施,主要讲述OPENSSL的主要层次结构,以及如何使用OPENSSL的相关功能来实现证书中心的主要功能,并指出了使用OPENSSL构建证书中心的优点。
关键词: OPENSSL;证书中心;X509;密码算法
中图分类号:TP309.1文献标识码:A文章编号:1671-7597(2010)0910185-01
0 引言
随着信息技术及电子商务的发展,信息系统的安全性越来越重要,其中数字证书是保障信息系统安全的重要技术。基于PKI体系,数字证书能够为系统的安全提供一个良好的基础,而这个体系中的核心便是证书中心,证书中心是证书颁发、撤销机构,一般简称为CA。在一个需要安全保障的系统中,构建一个良好的、标准的证书中心能够为系统的安全保障提供良好的服务。
现在证书均是基于X509标准,该标准比较复杂,其中用到了很多的密码算法,如果从底层做一个标准的证书中心,难度是非常大的。而OPENSSL弥补了这方面的不足,OPENSSL是一个开源项目,是以Eric Young以及Tim Hudson两人所写的SSLeay为基础所发展的,其基于标准C语言开发,能够用于Winows、Linux等主流操作系统。OPENSSL包含了大量的密码算法和协议,能够方便为证书中心的开发提供服务。本文首先介绍了OPENSSL主要结构,然后讲述了如何用OPENSSL来开发证书中心。
1 OPENSSL的构成
OPENSSL的本意是为SSL安全协议提供一套工具包,以便于SSL协议的开发,然而OPENSSL用途绝不仅限于此,除了为SSL安全协议的开发工具包外,还有很多其它的安全工具包构成,总结起来,OPENSSL主要由以下几部分构成:
1)各种密码算法的封装,其中包括非对称算法、对称算法、数字摘要算法等,基本涵盖了目前使用的各种密码算法。
2)证书等相关操作的封装,包括证书请求、证书、证书撤销列表各种对象的封装,及其生成、解析等主要函数也包括在其中。
3)SSL协议的封装,支持SSL3.0及TLS1.0协议。
4)一套命令行工具,通过这些命令行工具能够方便用户使用OPENSSL的各项功能,但功能相对较弱。
在证书中心的构建过程中,主要使用OPNESSL中的1、2、4部分,即其中的密码算法和证书相关操作的封装及相关命令。
2 证书中心的实现
下面主要说明了证书中心的主要功能,及如何使用OPENSSL进行实现。一个完善证书中心主要包含以下功能:
1)根证书、根私钥的生成:每个证书中心都有一个根证书,同时还有一个与证书相对应的私钥,该证书和私钥是由证书中心初始化的时候生成,其主要用于对用户证书的签名。
可以使用OPENSSL相关命令完成该步骤:
首先生成CA私钥:
openssl genrsa -out cakey.pem -rand .rand 1024
然后生成证书:
openssl req -new -out careq.csr -key cakey.pem
openssl req -new -x509 -days 3650 -key cakey.pem -out cacert.cer -config openssl.cnf
2)用户证书的生成:使用根证书对用户提交的公钥和身份信息进行签名,生成符合X509标准的用户证书。
可以使用在程序中调用OPENSSL提供的密码算法和证书接口完成,重要步骤如下:
X509*x=X509_new();//新建证书
X509_set_version(x,3);//设置证书版本
ASN1_INTEGER_set(X509_get_serialNumber(x),sn)//设置序列号
X509_gmtime_adj(X509_get_notBefore(x),0))//设置开始时间
X509_gmtime_adj(X509_get_notAfter(x),times);//设置有效期
X509_set_subject_name(x,subject);//设置主体名
X509_set_pubkey(x,pkey);//设置公钥
X509_set_issuer_name(x,issuername);//设置发行者
X509_sign(x,cakey,EVP_md5());//进行签名
3)用户证书的撤销:当用户证书丢失时,可以将其撤销,并交撤销的证书编号放入证收撤销列表(CRL)中,其核心代码如下。
X509_CRL*crl=X509_CRL_new();//新建CRL
X509_CRL_set_...(crl,…);//设置CRL相关信息
X509_CRL_add0_revoked(crl,revoked);//在CRL中加入撤销项
X509_CRL_sign(crl,cakey,EVP_md5());//对CRL进行签名
以上是一个证书中心的主要功能,除此之外,还有一些额外的工作,比如管理界面、证书数据库的操作、证书查询功能等,这些功能是常见的管理系统的功能,在这里就不再详述。
3 结论
OPENSSL是一个封装良好的密码函数库,通过其构建证书中心,不但开发速度快,而且扩展性和兼容性都非常好,特别适合于在中、小型系统中证书中心的开发。
参考文献:
[1]张巍,认证中心CA的设计与实现[D].四川大学,2003.
[2]杜广荣,PKI证书管理策略的研究与实现[D].东南大学,2005.
[3]陈晓果,OpenSSL的组件化封装研究与实现[D].西南交通大学,2006.
作者简介:
郭丽(1980-),女,河南省南阳市人,学士,河南工业设计学校(助教),主要研究方向为计算机网络。
关键词: OPENSSL;证书中心;X509;密码算法
中图分类号:TP309.1文献标识码:A文章编号:1671-7597(2010)0910185-01
0 引言
随着信息技术及电子商务的发展,信息系统的安全性越来越重要,其中数字证书是保障信息系统安全的重要技术。基于PKI体系,数字证书能够为系统的安全提供一个良好的基础,而这个体系中的核心便是证书中心,证书中心是证书颁发、撤销机构,一般简称为CA。在一个需要安全保障的系统中,构建一个良好的、标准的证书中心能够为系统的安全保障提供良好的服务。
现在证书均是基于X509标准,该标准比较复杂,其中用到了很多的密码算法,如果从底层做一个标准的证书中心,难度是非常大的。而OPENSSL弥补了这方面的不足,OPENSSL是一个开源项目,是以Eric Young以及Tim Hudson两人所写的SSLeay为基础所发展的,其基于标准C语言开发,能够用于Winows、Linux等主流操作系统。OPENSSL包含了大量的密码算法和协议,能够方便为证书中心的开发提供服务。本文首先介绍了OPENSSL主要结构,然后讲述了如何用OPENSSL来开发证书中心。
1 OPENSSL的构成
OPENSSL的本意是为SSL安全协议提供一套工具包,以便于SSL协议的开发,然而OPENSSL用途绝不仅限于此,除了为SSL安全协议的开发工具包外,还有很多其它的安全工具包构成,总结起来,OPENSSL主要由以下几部分构成:
1)各种密码算法的封装,其中包括非对称算法、对称算法、数字摘要算法等,基本涵盖了目前使用的各种密码算法。
2)证书等相关操作的封装,包括证书请求、证书、证书撤销列表各种对象的封装,及其生成、解析等主要函数也包括在其中。
3)SSL协议的封装,支持SSL3.0及TLS1.0协议。
4)一套命令行工具,通过这些命令行工具能够方便用户使用OPENSSL的各项功能,但功能相对较弱。
在证书中心的构建过程中,主要使用OPNESSL中的1、2、4部分,即其中的密码算法和证书相关操作的封装及相关命令。
2 证书中心的实现
下面主要说明了证书中心的主要功能,及如何使用OPENSSL进行实现。一个完善证书中心主要包含以下功能:
1)根证书、根私钥的生成:每个证书中心都有一个根证书,同时还有一个与证书相对应的私钥,该证书和私钥是由证书中心初始化的时候生成,其主要用于对用户证书的签名。
可以使用OPENSSL相关命令完成该步骤:
首先生成CA私钥:
openssl genrsa -out cakey.pem -rand .rand 1024
然后生成证书:
openssl req -new -out careq.csr -key cakey.pem
openssl req -new -x509 -days 3650 -key cakey.pem -out cacert.cer -config openssl.cnf
2)用户证书的生成:使用根证书对用户提交的公钥和身份信息进行签名,生成符合X509标准的用户证书。
可以使用在程序中调用OPENSSL提供的密码算法和证书接口完成,重要步骤如下:
X509*x=X509_new();//新建证书
X509_set_version(x,3);//设置证书版本
ASN1_INTEGER_set(X509_get_serialNumber(x),sn)//设置序列号
X509_gmtime_adj(X509_get_notBefore(x),0))//设置开始时间
X509_gmtime_adj(X509_get_notAfter(x),times);//设置有效期
X509_set_subject_name(x,subject);//设置主体名
X509_set_pubkey(x,pkey);//设置公钥
X509_set_issuer_name(x,issuername);//设置发行者
X509_sign(x,cakey,EVP_md5());//进行签名
3)用户证书的撤销:当用户证书丢失时,可以将其撤销,并交撤销的证书编号放入证收撤销列表(CRL)中,其核心代码如下。
X509_CRL*crl=X509_CRL_new();//新建CRL
X509_CRL_set_...(crl,…);//设置CRL相关信息
X509_CRL_add0_revoked(crl,revoked);//在CRL中加入撤销项
X509_CRL_sign(crl,cakey,EVP_md5());//对CRL进行签名
以上是一个证书中心的主要功能,除此之外,还有一些额外的工作,比如管理界面、证书数据库的操作、证书查询功能等,这些功能是常见的管理系统的功能,在这里就不再详述。
3 结论
OPENSSL是一个封装良好的密码函数库,通过其构建证书中心,不但开发速度快,而且扩展性和兼容性都非常好,特别适合于在中、小型系统中证书中心的开发。
参考文献:
[1]张巍,认证中心CA的设计与实现[D].四川大学,2003.
[2]杜广荣,PKI证书管理策略的研究与实现[D].东南大学,2005.
[3]陈晓果,OpenSSL的组件化封装研究与实现[D].西南交通大学,2006.
作者简介:
郭丽(1980-),女,河南省南阳市人,学士,河南工业设计学校(助教),主要研究方向为计算机网络。