http和https(HTTPS有什么用?跟HTTP有什么区别呢)
简单介绍一下概念,HTTPS(HyperText Transfer Protocol Secure),超文本传输安全协议,而HTTP(HyperText Transfer Protocol),超文本传输协议。很明显,关键区别在于“安全”,因为HTTP在因特网上传输的数据都是“一丝不挂”(明文)的,任何人都可能去窃听、劫持,甚至篡改你的数据,正因为如此,才有了HTTPS的出现,它的本质就是给你传输的数据“打个码”(加密),想偷窥你信息的人就无能为力了,保证了你的隐私等。
那HTTPS是如何保证安全的呢?
既然HTTP是明文传输的,要想安全传输,给它加个密不就完了吗?说的没错,事实上也是这么干的,可加密这事儿,也并没那么简单,流程是咋样的,我给你简单捋一捋。
加密,自然需要解密,而在我们计算机密码学中有几种常用的加密方式,比如,一种叫对称加密,意思加密和解密用的是同一把钥匙;还有一种叫非对称加密,加密和解密用的是不同的钥匙,公钥加密,私钥解密,私钥加密,公钥解密,反正麻烦的很。
无论使用上述哪种加密方式,都会涉及到传输“钥匙”的过程,否则你加了密,你不把钥匙给对方,对方怎么看的懂你的数据呢?所以这把“钥匙”要如何在网络上不被别人窃取的情况下安全的给到对方成了关键中的关键。
HTTPS的做法就是使用“数字证书”,可是,又如何保证数字证书的安全呢?有时候,在虚拟的网络世界中,光有技术是搞不定的,终归是要回到现实中的实体管制。
所以,需要某一个(些)被大家认可的权威机构(通常叫CA,Catificate Authority)来做这一件事情,权威机构下发的证书本身默认就是得到了操作系统、浏览器等信任的。权威机构亲自给你制作证书,然后你将证书放到服务器上,后续就完美的解决了所有信任问题。
具体保证数据安全传输的整个过程大致如下,看完可能会有疑惑为什么要大费周章的去搞一个数据加密的密钥,主要原因是因为对称密钥算法加密的数据在解密时会更快一些。
权威机构给的证书是经过权威机构私钥加密的,证书中包含服务器的公钥,服务器将权威机构给的证书下发给客户端,证书解密的公钥则默认内置在Windos、Linux、macOS等操作系统中,操作系统上的应用(客户端)使用内置这个的公钥对证书进行解密,得到服务器的公钥,然后生成一个用于加密数据的密钥,对数据进行加密,再用服务器的公钥加密这个密钥,发给服务器,服务器使用自己的私钥解密,得到加密数据的密钥,然后用此密钥解密收到的数据,便大功告成了。
除了安全,HTTPS还跟HTTP有啥区别?
还有一些主要区别就是,HTTPS所用的证书是需要购买的,从技术上讲本身也更复杂一些,,HTTP会更快一些,因为不涉及到加密解密。还有就是,HTTPS使用的端口不一样,HTTPS使用443,HTTP使用80,但这个只是共识。