https = http+ssl/tls 通过secure socket layer 来保证通信安全.
ssl 与tls的区别和联系:
96年发布的sslv3,得到大规模使用.99年出现了TLSv1,也就是sslv3的升级版ssl3.1.目前最高的是tls1.2版本.
所以tls是ssl的升级版.目前应用比较多的是TLS.[http://www.moserware.com/2009/06/first-few-milliseconds-of-https.html]
通信过程:
1. 认证和协商秘钥.2 使用协商的秘钥加密.
步骤1,叫做handshake.由4次通信组成.
第一次通信: c发送给s,内容 本地支持的协议版本(tls 1.0),随机数,支持的加密算法,和支持的压缩算法.
(由于这次请求没包含域名,所以服务器上只能存在一个证书,否则的话,服务器不知道应该用哪个来响应客户端. 后来06年增加了SNI使得客户端可以指定域名)
第二次通信:s回复c:确认协议版本;随机数;确认加密方法;服务端证书
服务端的证书保存在本地.并且此时如果服务端也要求客户端具有证书的话,就会要求客户端提供证书(USB秘钥,比如招商银行的在线系统)
第三次通信:c->s, 客户端验证证书内容.然后回复随机数(随机数使用证书公钥加密),编码改变通知(意味着后续通信全部是使用会话密钥做对称加密),握手结束标志.
第四次通信:s-> c :编码改变通知,握手结束标志.
各种web服务器都可以通过在配置中指定证书文件来启用ssl /tls的支持.这种证书文件支持c -s 之间的加密传输.但是不一定被信任.
受信任的证书是通过可信的ca颁发的.
证书授证中心,又叫做CA机构,为每个使用公开密钥的用户发放一个数字证书。浏览器在默认情况下内置了一些CA机构的证书,使得这些机构颁发的证书受到信任。VeriSign即是一个著名的国外CA机构,工行、建行、招行、支付宝、财付通等网站均使用VeriSign的证书,而网易邮箱等非金融网站采用的是中国互联网信息中心 CNNIC颁发的SSL证书。一般来说,一个证书的价格不菲