HTTPS和HTTP的区别
HTTPS的原理
它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。SSL的实现主要有两种方法:对称加密算法(AES和DES),非对称加密算法(公钥密钥RSA、DSA)。根据这两种算法可以设计一个设计一种无法让他人在互联网上知道你的通信息的加密方法:
1. 在服务器端存在一个公钥及私钥
2. 客户端从服务器取得这个公钥
3. 客户端产生一个随机的密钥
4. 客户端通过公钥对密钥加密(非对称加密)
5. 客户端发送到服务器端
6. 服务器端接受这个密钥并且以后的服务器端和客户端的数据全部通过这个密钥加
密(对称加密)
1. 在服务器端存在一个公钥及私钥
2. 客户端从服务器取得这个公钥
3. 客户端产生一个随机的密钥
4. 客户端通过公钥对密钥加密(非对称加密)
5. 客户端发送到服务器端
6. 服务器端接受这个密钥并且以后的服务器端和客户端的数据全部通过这个密钥加
密(对称加密)
其时序图如下:
正如上图所示,我们能保证下面几点:
1. 客户端产生的密钥只有客户端和服务器端能得到
2. 加密的数据只有客户端和服务器端才能得到明文
3. 客户端到服务端的通信是安全的
当然实际的SSL实现算法复杂的多,并有数据校验、身份验证等功能,如果需要更多了
角请参看RFC2246及RFC4346文档。
1. 客户端产生的密钥只有客户端和服务器端能得到
2. 加密的数据只有客户端和服务器端才能得到明文
3. 客户端到服务端的通信是安全的
当然实际的SSL实现算法复杂的多,并有数据校验、身份验证等功能,如果需要更多了
角请参看RFC2246及RFC4346文档。
HTTPS解决的问题:
1 . 信任主机的问题. 采用https 的server 必须从CA申请一个用于证明服务器用途类型的证书. 该证书只有用于对应的server 的时候,客户度才信任次主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server.
2 . 通讯过程中的数据的泄密和被窜改
服务端和客户端之间的所有通讯,都是加密的.
i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥.一般意义上的握手过程.
ii. 接下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也就没有什么意义了.
1 . 信任主机的问题. 采用https 的server 必须从CA申请一个用于证明服务器用途类型的证书. 该证书只有用于对应的server 的时候,客户度才信任次主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server.
2 . 通讯过程中的数据的泄密和被窜改
服务端和客户端之间的所有通讯,都是加密的.
i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥.一般意义上的握手过程.
ii. 接下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也就没有什么意义了.
HTTPS和HTTP的区别: https协议需要到ca申请证书,一般免费证书很少,需要交费。 http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议 http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。 http的连接很简单,是无状态的 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全 |