HTTPS学习

来源:互联网 发布:mac qq 编辑:程序博客网 时间:2024/06/05 19:19

HTTPS

与SSL组合使用的HTTP就被称为HTTPS
HTTPS=HTTP的基础上+加密+认证+完整性保护,http协议组合了SSL(安全套接层)协议或者TLS(安全传输)协议使用,对HTTP的通信内容加密
ps:http协议在通信的时候并不会主动地为通信内容进行加密,而是由开发人员主动为通信内容主体(不包括报文头)采用不同的加密组件人为地加密通信内容,这样间接起到一个安全通信的作用。

HTTPS加密机制

HTTP采用对称性加密和公开密钥加密的混合组合机密机制
(1)首先发送消息方使用公钥加密方式将共享密钥发送给接收方
(2)然后消息发送方将消息内容用共享密钥加密发送给接收方,接收方根据之前接收到的共享密钥对消息内容进行解密,从而获取真正的消息内容

非对称性加密:使用一对密钥(公钥和私钥)进行加解密,消息发送方使用接收方公开的公钥加密,接收方使用自己的私钥解密。

如何确保服务器发放的公钥的正确性

可以使用数字证书认证机构(著名的有威瑞信)和相关机关颁发的公开密钥证书
数字证书家机构流程:

  1. 服务器的运营人员向数字认证机构提出公开密钥的申请
  2. 机构对申请的公钥做数字签名(MD5),然后将将这个已签名的公钥与公钥证书(也叫数字证书或证书)绑定在一起发送给客户端
  3. 客户端对接收到的公钥证书进行验证,会用数字认证机构的公钥解密去验证数字签名,验证通过客户端就可以判定该公钥是服务器提供的真实可靠的公钥
    ps:数字认证机构的公钥会被浏览器开发商事先植入在内部,因为你很难再又去验证数字机构的公钥正确性了

SSL握手过程

  1. 客户端发出SSL握手信号
  2. 服务器端回应并出示相应的服务器证书(服务器公钥数字证书之类)
  3. 客户端验证服务器证书的正确性,然后产生共享密钥
  4. 客户端将用服务器公钥加密的共享密钥发送给服务器
  5.   服务器用自己的私钥解密得到共享密钥
  6. 双方使用共享密钥对通信内容进行加密,SSL安全通道建立成功

HTTPS速度慢吗?

答案是肯定的
由于客户端与服务器端进行TCP连接之前,需要经过SSL通信,这不仅会增加整体的通信量,加重网络负载2~100倍,而且需要做大量的加解密处理,这也会增加时延,还会消耗CPU和内存的服务器资源,拖累整个服务器的处理速度。综合来说,HTTPS的时延会大大增加,可使用SSL加速器硬件改善该问题

为什么不采用HTTPS通信

既然HTTPS的通信安全性远远高于HTTP,为什么所有的web网站都不采用HTTP?

  1. 所有的内容都进行加密通信,会消耗服务器更多的COU和硬件资源,留给请求处理的资源就相对变少了
  2. 只有一些敏感信息才需要保证严格的安全通信,并不是所有的信息都需要加密保护的
  3. 购买证书要钱啊,给每个用户买证书那web开发商喝西北风吗?
原创粉丝点击