首页 > 文章中心 > 正文

小议电子商务的CA认证实践

小议电子商务的CA认证实践

摘要:本文主要介绍了使用公开源代码的工具OpenSSL来完成数字证书的签署,实现电子商务中的CA认证的过程。

关键词:电子商务;OpenSSL;CA认证

1.前言

作为电子商务的安全核心SSL协议在电子商务安全性方面扮演了重要的角色。本文就是从安全技术角度介绍了以公开源代码的工具OpenSSL来实现电子商务中的安全认证过程。

2.SSL(SecureSocketLayer)协议及其主要技术

1996年由美国Netscape公司开发和倡导的SSL协议,它是目前安全电子商务交易中使用最多的协议之一,它被许多世界知名厂商的Intranet和Internet网络产品所支持。

SSL应用在Client和Server间安全的WebHTTP通信,URL以https开始替代http,并使用443端口进行通信。它主要使用加密机制、数字签名、数字摘要、身份认证、CA认证技术提供Client和Server之间的秘密性、完整性、认证性三种基本的安全服务。

3.用OpenSSL工具实现安全认证

目前,国外主流的电子商务安全协议在核心密码算法上都有出口限制,如只允许40位或56位的RC4和512位的RSA算法出口等。这样的算法强度引进后无法满足我国电子商务实际应用当中的安全需求。但是,完全自主定义和开发一套安全标准体系不是一蹴而就的事情,需要人、财、物的长期投入。

因此,如何对国外主流的电子商务安全协议的安全模块进行改造,用国内先进的密码算法替换其相应的安全强度不够的算法,变为国产的强安全协议,这样就能较好地提高我国电子商务安全技术水平。

在SSL未提供源代码的情况下,由澳大利亚软件工程师EricYoung与TimHudson联合开发的OpenSSL恰好解决了这一难题。它不仅能实现SSL的所有功能,支持目前所有基于SSLV2/V3和TSLV1的应用软件,而且由于源代码公开和提供了各种加密算法,完全可以满足国外安全协议引进后的本地化改造需求。

下面就用OpenSSL提供的强大功能在FreeBSD平台下进行手工签署证书的过程。

⑴先建立一个CA的证书,首先为CA创建一个RSA私用密钥:

#OpenSSLgenrsa-des3-outca.key1024

该指令中genras表示生成RSA私有密钥文件。

-des3表示用DES3加密该文件。

-outca.key表示生成文件ca.key。

1024是我们的RSAkey的长度。

生成server.key的时候会要你输入一个密码,这个密钥用来保护你的ca.key文件,这样即使人家偷走你的ca.key文件,也打不开,拿不到你的私有密钥。

运行该指令后系统提示输入PEMpassphrase,也就是ca.key文件的加密密码,这里设为12345678。

⑵用下列命令查看它的内容:

#OpenSSLrsa-noout-text-inca.key

该指令中rsa表示对RSA私有密钥的处理。

-noout表示不打印出key的编码版本信息。

-text表示打印出私有密钥的各个组成部分。

-inca.key表示对ca.key文件的处理

对RSA算法进行分析可以知道,RSA的私有密钥其实就是三个数字,其中两个是质数primenumbers。产生RSA私有密钥的关键就是产生这两个质数。还有一些其他的参数,引导着整个私有密钥产生的过程。

⑶利用CA的RSA密钥创建一个自签署的CA证书

#OpenSSLreq-new-x509-days365-keyca.key-outca.crt

该指令中req用来创建和处理CA证书,它还能够建立自签名证书,做RootCA。

-new产生一个新的CSR,它会要输入创建证书请求CSR的一些必须的信息。

-x509将产生自签名的证书,一般用来做测试用,或者自己做个RootCA用。

-days365指定我们自己的CA给人家签证书的有效期为365天。

-keyca.key指明我们的私有密钥文件名为ca.key。

-outca.crt指出输出的文件名为ca.crt。

执行该指令时系统要求用户输入一些用户的信息,如下所示:(框内为输入的内容)

Usingconfigurationfrom/etc/ssl/f

EnterPEMpassphrase:12345678

Youareabouttobeaskedtoenterinformationthatwillbeincorporated

intoyourcertificaterequest.

WhatyouareabouttoenteriswhatiscalledaDistinguishedNameoraDN.

Therearequiteafewfieldsbutyoucanleavesomeblank

Forsomefieldstherewillbeadefaultvalue,

Ifyouenter''''.'''',thefieldwillbeleftblank.

-----

CountryName(2lettercode)[AU]:CN(两个字母的国家代号)

StateorProvinceName(fullname)[Some-State]:JIANGSU(省份名称)

LocalityName(eg,city)[]:ZHANGJIAGANG(城市名称)

OrganizationName(eg,company)[InternetWidgitsPtyLtd]:FAMILYNETWORK(公司名称)

OrganizationalUnitName(eg,section)[]:HOME(部门名称)

CommonName(eg,YOURname)[]:TJL(你的姓名)

EmailAddress[]:TJL@(Email地址)

⑷用下列命令查看生成证书的内容:

#OpenSSLx509-noout-text-inca.crt

该指令中x509表示证书处理工具。

-noout表示不打印出key的编码版本信息。

-text表示以文本方式显示内容。

-inca.crt表示对ca.crt文件进行处理

系统显示证书内容为:

Certificate:

Data:

Version:3(0x2)

SerialNumber:0(0x0)

SignatureAlgorithm:md5WithRSAEncryption

Issuer:C=CN,ST=JIANGSU,L=ZHANGJIAGANG,O=FAMILYNETWORK,OU=HOME,CN=TJL/Email=TJL@WX88.NE

Validity

NotBefore:Feb2414:49:272003GMT

NotAfter:Feb2114:49:272013GMT

Subject:C=CN,ST=JIANGSU,L=ZHANGJIAGANG,O=FAMILYNETWORK,OU=HOME,CN=TJL/Email=TJL@

SubjectPublicKeyInfo:

PublicKeyAlgorithm:rsaEncryption

RSAPublicKey:(1024bit)

Modulus(1024bit):

00:da:20:09:11:19:1f:12:f0:98:0c:fc:91:ac:3e:

……

22:e1:ca:04:0f:dc:e9:bd:9f

Exponent:65537(0x10001)

X509v3extensions:

X509v3SubjectKeyIdentifier:

03:B0:14:8C:5D:C6:F8:F4:B0:96:A0:CC:7C:8F:9B:00:BB:78:E6:A6

X509v3AuthorityKeyIdentifier:

keyid:03:B0:14:8C:5D:C6:F8:F4:B0:96:A0:CC:7C:8F:9B:00:BB:78:E6:A6

DirName:/C=CN/ST=JIANGSU/L=ZHANGJIAGANG/O=FAMILYNETWORK/OU=HOME/CN=TJL/Email=TJL@

serial:00

X509v3BasicConstraints:

CA:TRUE

SignatureAlgorithm:md5WithRSAEncryption

8d:e8:46:82:40:b4:18:a2:12:9f:7a:66:e5:fc:0c:3f:77:5a:

……

04:13

从上面的输出内容可以看出这个证书基本包含了X.509数字证书的内容,从发行者Issuer和接受者Subject的信息也可以看出是个自签署的证书。

下面创建服务器证书签署请求(使用指令和系统显示信息基本和以上类似):

⑸首先为Apache创建一个RSA私用密钥:

#OpenSSLgenrsa-des3-outserver.key1024

这里也要设定口令passphrase,生成server.key文件。

⑹用下列命令查看它的内容:

#OpenSSLrsa-noout-text-inserver.key

⑺用server.key生成证书签署请求CSR:

#OpenSSLreq-new-keyserver.key-outserver.csr

这里也要输入一些请求证书的信息,和上面的内容类似。

⑻生成证书请求后,下面可以签署证书了,需要用到OpenSSL源代码中的一个脚本sign.sh,签署后就可以得到数字证书server.crt。

#sign.shserver.csr

⑼启动安全Web服务

最后在apache服务器中进行ca认证设置,拷贝server.crt和server.key到/usr/local/apache/conf

修改httpd.conf将下面的参数改为:

SSLCertificateFILE/usr/local/apache/conf/server.crt

SSLCertificateKeyFile/usr/local/apache/conf/server.key

可以启动带安全连接的Apache试一下了。

#/usr/local/apache/bin/apachectlstartssl

提示输入passphrase(就是前面为服务器设置的口令)

⑽进行安全连接

通过另一台电脑(IP地址为192.168.0.1)的IE浏览器与这台Apache服务器(IP地址为192.168.0.2)连接并且选择https协议,即:https://192.168.0.2:443。出现安全连接警告窗口,因为我的服务器证书是自己手工签署的,不是经过真正的CA颁发的证书,是个无效证书,所以按确定后出现安全证书无效的警告窗口。按“是”继续,出现如图1所示:

注意这里浏览器地址栏内输入的是https而不是http,另外此时在状态栏内出现了一把小锁,这说明SSL协议起作用了,服务器和浏览器之间建立了一个安全连接这样我们使用开放源代码的工具OpenSSL来完成了电子商务的CA认证过程,同时这也只是使用现成的工具来完成的,在实际使用中还要分析它的源代码,修改源代码,来达到自己的安全需要。

4.结束语

SSL是目前国际上流行Web安全工具,它融合了多种安全技术,实现安全的Web通信,必将在国内的安全电子交易领域得到广泛的应用。通过对公开源代码的工具OpenSSL的使用和分析,可以使我们对SSL协议有很好的理解和应用,对研究电子商务中的安全问题有具有特别的理论价值和实用价值。

参考文献:

[1]AlanOFreier,PhilipKarlton.TheSSLProtocolVersion3.0[J].NetscapeCommunications.1996

[2]CCITT.RecommendationX.509:TheDirectory.AuthenticationFramework[R].1998

[3]林枫主编.电子商务安全技术及应用北京:航空航天大学出版社

[4]易江波,赵战生,阮耀平.SSL及使用SSLeay实现证书的签发和管理计算机应用研究2001

[5]韦卫,王德杰等.基于SSL的完全WWW系统的研究与实现[J].计算机研究与发展1999

[6]唐礼勇,陈钟编写.电子商务技术及其安全问题.计算机工程与应用2000