通常情况下,HTTP会先直接和TCP进行通信。在使用SSL(安全套接字协议)的HTTPS后,就演变成和SSL进行通信,再由SSL和TCP进行通信。区别在于:1、HTTP的连接很简单,明文传输,通过80端口连接。2、HTTPS是由SSL HTTP构建的可进行身份认证、加密传输的协议,相对更安全,通过443端口连接。
3、HTTPS需要到证书颁发机构申请证书。由此可见HTTPS可以对内容传输结果进行完整性校验,内容结果对称加密,每个连接生产一个唯一的加密密钥,第三方无法伪造服务端或客户端身份。HTTPS的缺点SSL的专业证书需要购买,功能越是强大的证书费用越高。个人网站、小网站可以选择入门级别免费证书。SSL证书通常需要绑定固定IP,为服务器增加固定IP会增加一定费用。
SSL证书的信用链体系并不安全。某些国家可以控制CA根证书的情况下,中间人攻击一样可行。HTTPS连接服务器端资源占用较多,会影响缓存增加数据开销和功耗,会使页面的加载时间延长近50%,增加10%-20%的耗电,相同负载下会增加带宽和服务器投入成本。HTTPS协议的安全有范围,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到作用。
HTTPS既然有那么多缺点,那是不是就不做了呢?不是,“金无足赤,人无完人”,实际上越来越多的网站配置SSL证书,它可以有效地保护网络隐私,这已经成为了大众化的安全需求趋势。随着技术的发展很多的缺点也在弥补和优化,比如:很多服务器提供商推出了免费证书和一站式HTTPS搭建服务,打开速度问题也可以通过CDN加速服务解决。
HTTPS有什么用?跟HTTP有什么区别呢?
很高兴回答这个问题。HTTPS有什么用?和HTTP有什么区别?最近一直在做安全方面的开发,我来回答下。HTTPS是使用了安全技术的HTTP协议。HTTP的全称是超文本传输协议(HyperText Transfer Protocol)。HTTPS则是以安全为目标的HTTP通道(HyperText Transfer Protocol Over SecureSocket Layer)。
它们的区别就在于一个网络传输是非安全的,另一个网络传输是安全的。为什么要使用HTTPS?普通的HTTP协议采用明文传输,传送的消息容易泄漏及被篡改,也无法验证消息的可靠性和完整性。比如说向服务器传输的数据中携带了自己的银行账户和密码,使用明文的话,第三方只要拦截传输过程中的数据包,账户和明文就很容易被别人窃取。
又或者服务器给你回了一个指令,被人从中拦截,篡改为他的内容,你的客户端接收到时,就会按照篡改后的内容执行,非常不安全。再就是服务器给客户端发了条消息,因为网络原因,数据丢了一半内容,客户端又如何知道这个情况呢。HTTPS如何实现数据的安全传输的。先简单介绍几个概念。密钥密钥是把明文转换为密文或者将密文转换为明文的算法中输入的参数。
它分为两部分,公钥和私钥。有了私钥能推导出公钥,反过来则不行。可以简单理解为钥匙和锁头的关系,即有了钥匙能配出锁头来,但有锁头想配出钥匙来则很难。证书证书是公钥的载体,里面除了公钥外,还有证书有效期,颁发者信息等其它内容。摘要摘要就是其字面上的意思,对一段内容进行简略抽象。加解密加密就是把一段内容使用公钥,转换为另一种无法识别的内容,解密就是使用私钥把加了密的内容还原成原始的内容。
签名验签签名可以理解为另一种形式的加密,它使用私钥把原始内容转换为无法识别的内容,验签则是拿着原始内容以及签名内容,使用公钥验证它们是否一致。下面再说下安全处理过程。给消息生成摘要后,对摘要做签名,使得客户端能验证消息来源的可靠性和完整性。服务器在给客户端的消息前,会先给消息生成摘要,再用自己的私钥给摘要做签名,最后再把签名和私钥对应的证书一起附在消息最后,发给客户端。
客户端收到消息后,先验证证书的有效性,如果证书无效,直接pass以确保消息的可靠性。然后对消息做摘要,再拿证书里的公钥结合摘要验证签名是否有效,这样即使消息被篡改或者破坏了了,因为生成的摘要不同,签名也就不一样,可以确保消息的完整性以及未被篡改。通过对消息加密,避免消息内容被他人解读。服务器和客户端在传输消息前,会先交换双方的密钥,然后传输过程都是一方用密钥对消息加密,另一方用密钥对消息解密。
而且即使第三方截获了数据包,也会因为没有密钥而无法解读消息,避免具体内容的泄露。总之,与HTTP协议相比,虽然HTTPS的处理逻辑要复杂得多,但在互联网安全日益重要的今天,它已经成为最常用的网络传输协议。这些是HTTP和HTTPS的一些概念性介绍。更复杂详细的实现原理这里就不展开了。希望对你有帮助。谢谢你。