您的位置:首页 > 运维架构

探讨用OPENSSL实现电子商务中的CA认证

2009-11-05 16:37 302 查看
摘要摘要:本文主要介绍了使用公开源代码的工具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摘要: md5WithRSAEncryption
Issuer摘要: C=CN, ST=JIANG SU, L=ZHANGJIAGANG, O=FAMILY NETWORK, OU=HOME, CN=TJL/Email=TJL@WX88.NE
Validity
Not Before摘要: Feb 24 14摘要:49摘要:27 2003 GMT
Not After 摘要: Feb 21 14摘要:49摘要:27 2013 GMT
Subject摘要: C=CN, ST=JIANG SU, L=ZHANGJIAGANG, O=FAMILY NETWORK, OU=HOME, CN=TJL/Email=TJL@WX88.NET
Subject Public Key Info摘要:
Public Key Algorithm摘要: rsaEncryption
RSA Public Key摘要: (1024 bit)
Modulus (1024 bit)摘要:
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)
X509v3 extensions摘要:
X509v3 Subject Key Identifier摘要:
03摘要:B0摘要:14摘要:8C摘要:5D摘要:C6摘要:F8摘要:F4摘要:B0摘要:96摘要:A0摘要:CC摘要:7C摘要:8F摘要:9B摘要:00摘要:BB摘要:78摘要:E6摘要:A6
X509v3 Authority Key Identifier摘要:
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=JIANG SU/L=ZHANGJIAGANG/O=FAMILY NETWORK/OU=HOME/CN=TJL/Email=TJL@WX88.NET
serial摘要:00

X509v3 Basic Constraints摘要:
CA摘要:TRUE
Signature Algorithm摘要: 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 私用密钥摘要:
# OpenSSL genrsa -des3 -out server.key 1024
这里也要设定口令pass phrase,生成 server.key 文件。
⑹ 用下列命令查看它的内容摘要:
# OpenSSL rsa -noout -text -in server.key
⑺ 用 server.key 生成证书签署请求 CSR摘要:
# OpenSSL req -new -key server.key -out server.csr
这里也要输入一些请求证书的信息,和上面的内容类似。
⑻ 生成证书请求后,下面可以签署证书了,需要用到OpenSSL源代码中的一个脚本 sign.sh,签署后就可以得到数字证书server.crt。
# sign.sh server.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/apachectl startssl
提示输入pass phrase(就是前面为服务器设置的口令)
⑽ 进行平安连接
通过另一台电脑(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协议有很好的理解和应用,对探究电子商务中的平安新问题有具有非凡的理论价值和实用价值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: