用OPENSSL实现电子商务中的CA认证
摘要:本文主要介绍了使用公开源代码的工具OpenSSL来完成数字证书的签署,实现电子商务中的CA认证的过程。
关键词:电子商务;OpenSSL;CA认证
1. 前言
作为电子商务的安全核心SSL协议在电子商务安全性方面扮演了重要的角色。本文就是从安全技术角度介绍了以公开源代码的工具OpenSSL来实现电子商务中的安全认证过程。
2. SSL(Secure Socket Layer)协议及其主要技术
1996年由美国Netscape公司开发和倡导的SSL协议,它是目前安全电子商务交易中使用最多的协议之一,它被许多世界知名厂商的Intranet和Internet网络产品所支持。
SSL应用在Client和Server间安全的Web HTTP通信,URL以https开始替代http,并使用443端口进行通信。它主要使用加密机制、数字签名、数字摘要、身份认证、CA认证技术提供Client和Server之间的秘密性、完整性、认证性三种基本的安全服务。
3. 用OpenSSL工具实现安全认证
目前,国外主流的电子商务安全协议在核心密码算法上都有出口限制,如只允许40位或56位的RC4和512位的RSA算法出口等。这样的算法强度引进后无法满足我国电子商务实际应用当中的安全需求。但是,完全自主定义和开发一套安全标准体系不是一蹴而就的事情,需要人、财、物的长期投入。
因此,如何对国外主流的电子商务安全协议的安全模块进行改造,用国内先进的密码算法替换其相应的安全强度不够的算法,变为国产的强安全协议,这样就能较好地提高我国电子商务安全技术水平。
在SSL未提供源代码的情况下,由澳大利亚软件工程师Eric Young与Tim Hudson联合开发的OpenSSL恰好解决了这一难题。它不仅能实现SSL的所有功能,支持目前所有基于SSL V2/V3和TSL V1的应用软件,而且由于源代码公开和提供了各种加密算法,完全可以满足国外安全协议引进后的本地化改造需求。
下面就用OpenSSL提供的强大功能在FreeBSD平台下进行手工签署证书的过程。
⑴ 先建立一个 CA 的证书,首先为 CA 创建一个 RSA 私用密钥:
# OpenSSL genrsa -des3 -out ca.key 1024
该指令中genras表示生成RSA私有密钥文件。
-des3表示用DES3加密该文件。
-out ca.key表示生成文件ca.key。
1024是我们的RSA key的长度。
生成server.key的时候会要你输入一个密码,这个密钥用来保护你的ca.key文件,这样即使人家偷走你的ca.key文件,也打不开,拿不到你的私有密钥。
运行该指令后系统提示输入 PEM pass phrase,也就是ca.key文件的加密密码,这里设为12345678。
⑵ 用下列命令查看它的内容:
# OpenSSL rsa -noout -text -in ca.key
该指令中rsa表示对RSA私有密钥的处理。
-noout表示不打印出key的编码版本信息。
-text表示打印出私有密钥的各个组成部分。
-in ca.key 表示对ca.key文件的处理
对RSA算法进行分析可以知道,RSA的私有密钥其实就是三个数字,其中两个是质数prime numbers。产生RSA私有密钥的关键就是产生这两个质数。还有一些其他的参数,引导着整个私有密钥产生的过程。
⑶ 利用 CA 的 RSA 密钥创建一个自签署的 CA 证书
# OpenSSL req -new -x509 -days 365 -key ca.key -out ca.crt
该指令中req用来创建和处理CA证书,它还能够建立自签名证书,做Root CA。
-new 产生一个新的CSR, 它会要输入创建证书请求CSR的一些必须的信息。
-x509 将产生自签名的证书,一般用来做测试用,或者自己做个Root CA用。
-days 365 指定我们自己的CA给人家签证书的有效期为365天。
-key ca.key指明我们的私有密钥文件名为ca.key。
-out ca.crt指出输出的文件名为ca.crt。
执行该指令时系统要求用户输入一些用户的信息,如下所示:(框内为输入的内容)
Using configuration from /etc/ssl/OpenSSL.cnf
Enter PEM pass phrase:12345678
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN (两个字母的国家代号)
State or Province Name (full name) [Some-State]:JIANG SU (省份名称)
Locality Name (eg, city) []:ZHANGJIAGANG (城市名称)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:FAMILY NETWORK (公司名称)
Organizational Unit Name (eg, section) []:HOME (部门名称)
Common Name (eg, YOUR name) []:TJL (你的姓名)
Email Address []:TJL@WX88.NET (Email地址)
⑷ 用下列命令查看生成证书的内容:
# OpenSSL x509 -noout -text -in ca.crt
该指令中x509表示证书处理工具。
-noout表示不打印出key的编码版本信息。
-text 表示以文本方式显示内容。
-in ca.crt 表示对ca.crt文件进行处理
系统显示证书内容为:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 0 (0x0)
Signature Algorithm: md5WithRSAEncryptio