安全套接层Secure Sockets Layer,SSL)是一种安全协议,在網景公司(Netscape)推出首版Web浏览器的同时提出,目的是为网络通信提供安全及数据完整性保障,SSL在传输层中对网络通信进行加密。

SSL采用公开密钥技术,保证两个应用间通信的保密性可靠性,使客户與服务器应用之间的通信不被攻击者窃听。它在服务器和客户机两端可同时被支持,目前已成为互联网上保密通讯的工业标准。现行的Web浏览器亦普遍将HTTP和SSL相结合,从而实现安全通信。此協议其继任者是TLS

 

優勢

SSL协议的优势在于它是与应用层协议独立无关的。高层的应用层协议(例如:HTTPFTPTelnet等等)能透明的建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。

过程



以下简要介绍SSL协议的工作方式。客户端要收发几个握手信号:

  1. 发送一个「ClientHello」消息,内容包括:支持的协议版本,比如TLS1.0版,一个客户端生成的随机数(稍后用户生成“会话密钥”),支持的加密算法(如RSA公钥加密)和支持的压缩算法。
  2. 然后收到一个「ServerHello」消息,内容包括:确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信,一个服务器生成的随机数,稍后用于生成"对话密钥",确认使用的加密方法,比如RSA公钥加密,服务器证书。
  3. 当双方知道了连接参数,客户端与服务器交换证书(依靠被选择的公钥系统)。这些证书通常基于X.509,不过已有草案支持以OpenPGP为基础的证书。
  4. 服务器请求客户端公钥。客户端有证书即双向身份认证,没证书时随机生成公钥。
  5. 客户端与服务器通过公钥保密协商共同的主私钥(双方随机协商),这通过精心谨慎设计的伪随机数功能实现。结果可能使用Diffie-Hellman交换,或简化的公钥加密,双方各自用私钥解密。所有其他关键数据的加密均使用这个「主密钥」。

数据传输中记录层(Record layer)用于封装更高层的HTTP等协议。记录层数据可以被随意压缩、加密,与消息验证码压缩在一起。每个记录层包都有一个Content-Type段用以记录更上层用的协议。

TLS和SSL的差異

SSL(Secure Sockets Layer)是网景公司(Netscape)设计的主要用于Web的安全传输协议。这种协议在Web上获得了广泛的应用。IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),其最新版本是RFC 5246,版本1.2。从技术上讲,TLS1.0与SSL3.0的差異非常微小。

TLS

TLS利用密钥算法互联网上提供端点身份认证通讯保密,其基础是公钥基础设施(public key infrastructure,PKI)。不过在实现的典型例子中,只有网络服务者被可靠身份验证,而其客户端则不一定。这是因为公钥基础设施普遍商业运营,电子签名证书通常需要付费购买。协议的设计在某种程度上能够使主从架构应用程序通讯本身预防窃听干扰(Tampering)和消息伪造

TLS包含三个基本阶段:

  1. 对等协商支援的密钥算法
  2. 基于非对称密钥的信息传输加密和身份认证、基于PKI证书的身份认证
  3. 基于对称密钥的数据传输保密

在第一阶段,客户端与服务器协商所用密码算法。 当前广泛实现的算法选择如下:

TLS/SSL有多样的安全保护措施:

  • 所有的记录层数据均被编号,用于消息验证码校验。

 

===

主流浏览器都支持http1.1
目前IE、Firefox较新的版本都是默认设置为使用HTTP1.1协议的。

如何查看IE使用的HTTP协议版本? 是1.1还是1.0呢
  工具->首选项->高级   里面第一个就是

Firefox的设置不是那么直观,我到水木社区上问了一下牛人才知道了的。
Firefox设置使用的HTTP协议的版本方法:
地址栏输入 about:config  --> 查找network.http.version  双击此选项可修改版本,默认为1.1

至于HTTP1.1与1.0版本有啥区别,下次学习一下后再总结。