安全套接字层协议SSL

安全套接字协议简介
      安全套接字协议简称SSL(Secure Socket Layer),是网景(NetScape)公司提出的,用于Web安全通信的协议。SSL协议实现服务器认证、客户端认证()、数据在联链路上传输的完整性和保密性等功能。
安全套接字协议的功能
      1、在客户端和服务器端加密数据,使在网络上传输的数据只有客户端和服务器端能相互认得,即使数据在网络上被窃听或截取,攻击者也无法得到正确的数据,还原不出明文,从而保证传输的数据的安全。
      2、实现客户端和服务器端的身份验证。
安全套接字协议的原理
      SSL的工作原理其实就是服务器端和客户端的握手协商,在协商之后就可以使用SSL进行数据的交换。
      1、客户端发送客户端的信息,包括客户端支持的SSL 的版本、客户端支持的密码对和客户端支持的数据压缩方法,消息中还有一个28位的随机数。
      2、服务器回复一个Hello消息,该消息包括使用的密码方法(密码对)和由服务器选择的数据压缩方法,以及会话标识和另一个随机数。
      3、服务器发送它的SSL证书,如果需要对客户端进行验证(SSL 3.0版本开始支持客户端验证),客户端也需要发送数字证书请求消息。
      4、服务器发送完成消息,等等客户端响应。
      5、当客户端接收到服务器端的完成消息之后,客户端会检查服务器端SSL数字证书的有效性。如果服务器端需要验证客户端的身份,客户端就会发送其数字证书 给服务器端,如果客户端没有对应的数字证书,就会弹出一个警告的窗口,如果服务器端强制客户端的身份认证的话,客户端没有相应的证书的时候,服务器就会结 束该会话。
      6、客户端发送"客户端密钥交换"消息,此消息包含 pre-master secret (一个用在对称加密密钥生成中的 46 字节的随机数字),和 消息认证代码 ( MAC )密钥(用服务器的公用密钥加密的)。服务器端对客户端发送的消息进行验证,没有通过的话,那么服务器将结束此次会话。
      7、客户端发出"更改密码规范" 消息。
      8、服务器以自己的"更改密码规范"和"已完成"消息响应。
      9、握手结束,服务器端和客户端可以进行加密通信。
安全套接字协议的部署
      这篇日志是在Windows 2003 的IIS 6.0下部署SSL的全过程,在这个实验中使用的是网络上的证书,其实也可以自己创建一个认证服务器,在自己的服务器上申请证书,然后颁发给服务器就OK。
安全套接字协议的缺点
      在通信的过程中,要求客户端和服务器都要对传输的数据进行加密和解密,会增加很多的系统开销,特别是CPU的资源,比不使用SSL协议的通信要慢很多。此外,使用SSL的通信所占用的流量可能是不使用SSL协议时候流量的三倍
参考资料:
      1、SSL工作原理
      2、SSL的缺点