HTTPS是什么?
HTTP(Hyper Text Transfer Protocol)就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用它传输隐私信息非常不安全。S即SSL协议(secure sockets layer)即为带安全套接层的超文本传输协。是对隐私信息进行加传输的一种协议。
数字证书
它是由第三方权威机构即CA中心颁发的证书,里面包含了网站地址,加密公钥,以及证书的颁发机构等信息,它的作用是确保网上信息传递的保密性和完整性。
非对称加密算法
需要两个密钥(公开密钥和私有密钥),加密和解密使用不同的密钥,使用公开密钥加密必须要用私有密钥解密,使用私有密钥加密必须要公有密钥解密。
其工作过程为:甲方生成一对密钥,然后将其中一把作为公有密钥发送给其他方,乙方收到公开密钥后会使用密钥加密数据后发送给甲方,甲方再使用私有密钥对数据进行解密
非对称加密算法有:RSA,DSA/DSS(数字签名算法)
HTTPS的工作原理
HTTPS在数据传输前浏览器会和服务器进行一次握手,目的是为了确立加密传输数据的密码信息通常会和数字证书配合。
HTTPS的握手具体过程
参考上图可以迅速描述出https的握手过程:
一、浏览器发送自己所支持的一套加密规则给网站;
二、网站收到后选出一组加密算法和hash算法,并将自己的身份信息通过证书的形式发送给浏览器。证书中包括网站的地址,加密公钥和证书颁发机构。
三、浏览器收到网站发来的证书后会进行
1、验证证书的合法性即证书的颁发机构是否合法和网站信息是否与要访问的地址一致等。如果一致则在浏览器搜索栏中出现小锁,否则则为不可信证书
2、如果为可信证书或用户接受了不可信的证书,浏览器会生成一串随机数密码,并用证书中提供的加密密钥进行加密
3、利用hash算法对握手信息进行计算并用是生成的随机数进行加密,后把生成的所有信息全部发送给网站
四、网站接收到浏览器发来的信息后
1、先用私有密钥解密出随机数密码,再用密码对握手信息解密,最后用hash算法算出hash值是否与浏览器一致
2、用随机密码加密一段握手信息发送给浏览器。
五、浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。