1.http
超文本传输协议,使用的是明文传输,默认工作在tcp协议的80端口,灵活简单,不会对通信方进行确认,无法保证数据的完整性
2.https
超文本传输安全协议,在http的基础上加了SSL/TLS协议,默认工作在443端口,提供对网站服务器的身份认证,保护交换数据的隐私和安全性。
3.https的加密方式
利用非对称加密的方式加密对称加密的密钥,用对称加密来传输数据。
服务器和浏览器都有一对公钥和私钥(用来非对称加密),服务器将自己的公钥给浏览器,浏览器收到后生成一个密钥(用来对称加密的),浏览器用服务器的公钥加密生成的这个密钥,然后传给服务器,服务器用私钥解密获得这个密钥,这时浏览器和服务器都有这个密钥了,然后浏览器用这个密钥加密数据传输给服务器。
但是服务器传递公钥的时候可能会被第三方截走,然后将自己的公钥给浏览器,浏览器获得的就是第三方的公钥,加密密钥传输给服务器的时候再被第三方截走,解密后再用服务器的公钥进行加密然后给服务器,这时浏览器,服务器和第三方都有对称加密的密钥,数据就不安全了。
所以要使用证书去证明这个公钥是服务器的。但是证书也有可能伪造,所以要进行防伪。
首先CA机构有非对称加密的公钥和密钥,对证书的明文数据进行hash,hash过后用私钥进行进行加密得到数字签名,明文和数字签名组成数字证书。
浏览器拿到证书,得到明文和签名。用CA机构的公钥对签名进行解密,用证书里的hash算法对明文进行hash,将这两个结果进行对比,如果相同,表示证书可信,没被篡改。
参考文章:HTTPS的加密方式超详细解读