SSL全称为“Secure Sockets Layer”(安全套接层),是一种用于网站安全连接的协议(或技术)。
所谓的安全连接有两个作用:
首先是SSL可以提供通信双方相互认证。显而易见,当你开始和对方交换信息前,确切了解对方身份是非常重要的。SSL通过数字证书技术实现,使得这一需求得以满足。
另一个是它能使数据以加密方式传输,使得非授权用户不可读。

一.
在介绍SSL其它知识之前,按照惯例,我们还是先来介绍几个专业名词:
1. 证书
数字证书是公钥数据的可信载体,包含了持有者的身份信息,并且由权威第三方CA中心签发和管理,也就是说证书的可信,是由于对权威第三方的信任所建立的

2. 证书链
顾 名思义,证书链就是一串证书,准确地说,证书链就是由CA颁发机构的根CA证书与二级CA证书这两张证书组成.拥有了CA证书链后,你的浏览器将自动信任 由同一家CA签发的所有证书。如果你选择了这个选项,系统会询问你是否要接受给你的浏览器的CA证书。通过选择接受证书,你的浏览器将直接收到证书。

3. CA
CA是证书颁发机构,是一个权威的第三方,作为信任关系的起点.其功能包括:接收并处理证书申请请求,生成证书,生成证书废止列表,发布证书到目录服务器.所有证书必须经由CA签名,证书才能生效,才是合法的证书.

二. 数字证书的验证过程
第一步,验证CA中心的签名,如果通过,即可知数字证书的内容是真实和完整的
第二步,验证证书时间有效性,每张证书都有有效期,如果通过,即可知数字证书还在有效使用期限内
第三步,验证证书状态有效性,被挂失或者作废的证书,都被CA中心发布到CRL黑名单中,要检查对方证书是否在CRL中,如通过,即可知数字证书的状态是正常的

三. SSL握手

               client                                                                       server
                                                  hello
                                               ----------------->                      
                                                  hello
                                               <-----------------
----------------分-隔-线-------------------------------------------------
                                             服务器证书
                                               <-----------------
                                             证书请求(双向认证)
                                               <-----------------
-------------------------分-隔-线------------------------------------
                                             客户端证书
                                               ------------------>
                                             验证证书
                                               ------------------>
-----------------------------分-隔-线-------------------------------------
                                            握    手    结    束

相关解释:
客户端向服务器发送client_hello报文,服务器向客户机回应server_hello报文,建立如下的安全属性:协议版本,会话ID,压缩方法,同时生成并交换用于防止重放***的随机数
如果服务端配置为单向认证,客户端则只需要验证服务器证书是否合法,不需要出示自己的证书;而如果服务端配置为双向认证,客户端验证完服务器证书后,会应服务端的要求出示自己的用户证书,服务端来验证客户端的合法性
握手结束,客户与服务器可以发送应用层数据了

三. 数据传输过程
1.  发送方

1)  |--------------|          用 会话密钥 加密
    |     明文    |        --------------------------->  密文
    |--------------|
2)   |--------------用 hash算法             发送方 的私钥
     |     明文    |    --------->  摘要  -----------> 签名后 的原文摘要
     |--------------|
3)  |------------------|    用 接收方的 公钥 加密
    |     会话密钥    |     -------------------->  加密后 的 会话密钥
    |-------------------|
发送方将这三样东西传给接收方,接收方拿到这三样东西之后;
2.  接收方
1)                       用 接收方 的 私钥 解密
 加密后 的 会话密钥   -------------------------------->  会话密钥
2)                       用 会话密钥 解密
 签名后 的 原文摘要   ------------------------------->  摘要
3)             用 会话密钥 解密              用 hash算法
 密文        -------------------->   明文 -------------------->   摘要
然后,拿2),3)的两个摘要对比,一致则表示数据完整,反之,数据有可能被篡改.