1.http简介

     它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。也就是说它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

SSL介绍

       SSL (Secure Socket Layer) 为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL协议提供的服务
1)认证用户和服务器,确保数据发送到正确的客户机和服务器。

   2)加密数据以防止数据中途被窃取。

   3)维护数据的完整性,确保数据在传输过程中不被改变。
SSL协议的工作流程
服务器认证阶段

1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接。

2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息。

3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器。

4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。
用户认证阶段
在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。

      从SSL 协议所提供的服务及其工作流程可以看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,由于运作电子商务的企业大多是信誉较高的大公司,因此这问题还没有充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程中的单一认证问题就越来越突出。虽然在SSL3.0中通过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证,但是SSL协议仍存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。

SSL协议的握手过程

     SSL 协议既用到了公钥加密技术又用到了对称加密技术,对称加密技术虽然比公钥加密技术的速度快,可是公钥加密技术提供了更好的身份认证技术。SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:

①客户端的浏览器向服务器传送客户端SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

②服务器向客户端传送SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。

③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。 ④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。

⑤如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。

⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。

⑦服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于SSL 协议的安全数据通讯的加解密通讯。同时在SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。

⑧客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。

⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。

⑩SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

证书各部分的含义

证书版本号,不同版本的证书格式不同。

Serial Number 序列号,同一身份验证机构签发的证书序列号唯一 。

Algorithm Identifier 签名算法,包括必要的参数Issuer 身份验证机构的标识信息 。

Period of Validity 有效期。

Subject 证书持有人的标识信息。

Subject’s Public Key 证书持有人的公钥 。

Signature 身份验证机构对证书的签名。

 证书的格式 认证中心所发放的证书均遵循X.509 V3 标准,其基本格式如下

证书版本号(Certificate Format Version)用来指定证书格式采用的X.509 版本号。

证书序列号(Certificate Serial Number)用来指定证书的唯一序列号,以标识CA 发出的所有公钥证书。 签名(Signature)算法标识(Algorithm Identifier)用来指定 CA 签发证书所用的签名算法。

签发此证书的 CA 名称(Issuer )用来指定签发证书的 CA 的X.500 唯一名称(Distinguished Name)。 证书有效期 用来指定证书起始日期和终止日期。

用户名称(Subject)用来指定证书用户的X.500 唯一名称(DN,Distinguished Name)。

用户公钥信息(Subject Public Key Information)算法(algorithm) 算法标识(Algorithm Identifier)用户公钥(subject Public Key用来标识公钥使用的算法,并包含公钥本身。

证书扩充部分(扩展域)(Extensions)用来指定额外信息。

X.509 V3 证书的扩充部分(扩展域)及实现方法如下

CA 的公钥标识(Authority Key Identifier)

签发证书者证书的序列号(Certificate Serial Number)

X.509 V3 证书的扩充部分(扩展域)及实现CA 的公钥标识(Authority Key Identifier)

公钥标识(SET 未使用)(Key Identifier)

签发证书者证书的签发者的甄别名(Certificat签发证书者证书的序列号(Certificate Serial Number)CA 签名证书所用的密钥对的唯一标识用户的公钥标识(Subject Key Identifier)用来标识与证书中公钥相关的特定密钥进行解密。

证书中的公钥用途(Key Usage)用来指定公钥用途。

用户的私钥有效期 用来指定用户签名私钥的起始日期和终止日期。

CA 承认的证书政策列表(Certificate Policies)用来指定用户证书所适用的政策,证书政策可由对象标识符表示。

用户的代用名(Substitutional Name)用来指定用户的代用名。

CA 的代用名(Issuer Alt Name)用来指定 CA 的代用名。

基本制约(Basic Constraints)用来表明证书用户是最终用户还是CA。

证书类型(Certificate Type)用来区别不同的实体。该项是必选的。

商户数据(Merchant Data)包含支付网关需要的所有商户信息。

持卡人证书需求(Card Cert Required)显示支付网关是否支持与没有证书的持卡人进行交易。

SET 扩展(SETExtensions)列出支付网关支持的支付命令的 SET 信息扩展。

CRL 数据定义版本(Version)显示 CRL 的版本号。

CRL 的签发者(Issuer)指明签发 CRL 的CA 的甄别名。

CRL 发布时间(this Update)预计下一个 CRL 更新时间(Next Update)撤销证书信息目录(Revoked Certificates)。

2.案例配置

用到的拓扑图:

20

1)配置CA

安装httpd服务

[root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm

配置ca

[root@localhost pki]# cd /etc/pki/tls/

[root@localhost tls]# vim openssl.cnf

openssl.cnf修改如下

21

 

22

23

在/etc/pki/CA/下创建所需目录及文件

15

颁发证书的初始序列号为01

16

创建CA的私钥

18

创建CA的证书

19

至此CA服务器配置完毕

2)配置web服务器

编辑web首页

[root@localhost www]# cd /var/www/html

10

创建.htaccess 文件只有指定用户才能访问

12

[root@localhost html]# vim .htaccess

authuserfile   /var/www/html/.xht               //用户名密码保存文件
authtype      basic                                      // 验证类型为基本验证类型 
authname     " please input password"      // 访问提示
require       valid-user

创建有效用户

13 

安装yum

[root@localhost tls]# vim /etc/yum.repos.d/rhel-debuginfo.repo

1

安装ssl模块

7

为站点产生私钥,私钥文件为httpd.key

19

站点向CA发出证书请求

9

获取证书

8

编辑ssl.conf文件

[root@localhost html]# cd /etc/httpd/conf.d

5

34

SSLCertificateFile /etc/httpd/certs/httpd.cert           //证书所在位置

SSLCertificateKeyFile /etc/httpd/certs/httpd.key      //私钥所在位置

编辑httpd.conf文件

TT截图未命名

对于所有访问者都要求验证

5

6

xp

主机上修改hosts

5

 

3)测试

6

 

8

3

4