http协议和https的区别:
1.http协议是不安全的,https协议是安全的,也就是说https是对数据进行加密的
2.http端口号默认是80,而https默认是443
一些概念:
公钥 :公开的密钥,任何人都可以知道这个秘钥及其解密算法。
私钥 :不公开密钥,一般是企业服务器内部私有。
对称加密 :加密使用的密钥和解密使用的密钥是相同的,不区分 公钥 和 私钥 ,实现对称加密需要通信双方先协商好一把密钥,用于在通信过程中解密加密信息,对称加密的特点是加密、解密的效率比较高。
非对称加密 :加密使用的密钥和解密使用的密钥是不相同的。也就是说使用 公钥 加密的内容必须使用 私钥 解密;使用 私钥 加密的内容必须使用 公钥 解密,非对称加密的加密、解密效率比对称加密低
HTTPS的通信过程
假设一个服务器端支持HTTPS访问(即已经配置了SSL证书,该证书得到公开认可,这个证书上会有一对公钥和私钥),那么从客户端使用HTTPS发起请求到客户端、服务器端稳定通信的流程如下:
1.客户端发起请求
客户端发起HTTPS连接请求,告诉服务器要以HTTPS的方式进行通信。
2.服务器端传送证书
服务器端收到客户端的请求后,便会向客户端传送包含了公钥、颁发机构、过期日期等内容的数字证书,便于后面进行非对称加密使用。
3.客户端验证证书并发送签名信息
客户端收到服务器端发送的证书后,为了证明这个证书是”真正的”服务器端发出且可信的,而不是中间攻击者发出的,需要向CA机构服务器验证这个证书是否可信,若这个证书是CA机构不认可的,那么此时会发出警告,通知客户端此次通信存在安全问题:
如果数字证书验证通过,那么客户端需要验证当前跟他通信的服务器有私钥,此时客户端会生成一个随机数,使用证书上的公钥进行加密,这个随机数称之为 数字签名 。
4.服务器端解密数字签名,并回传验证信息
服务器端收到公钥加密的数字签名后,便可使用私钥进行解密得到客户端的数字签名,随后该数字签名用私钥进行加密,作为一个验证信息回馈至客户端。
5.客户端验证服务器私钥
服务器使用私钥加密的签名信息发送到客户端后,根据非对称加密的原则,客户端可以使用公钥对这个加密信息进行解密,解密得到的签名信息再跟第三步的签名信息做比较,如果二者一致,那么证明当前通信服务器拥有私钥并且当前通信没有中间攻击者篡改通信信息,接下来可以愉快的进行通信了。此时客户端再次生成一个随机数,使用公钥加密后发送至服务器端,这个随机数作为接下来对称加密的密钥。
6.建立对称加密通信
服务器端收到第五步客户端发出的加密随机数后,使用私钥解密,那么此时,客户端和服务器端都拥有一个相同的随机数,客户端和服务器端都可以用对称加密算法来加密和解密通信内容了。
以上六个流程,第2-5步都是非对称加密,由于服务器私钥不对外公开,即使有中间攻击者对通信信息作出篡改或冒充,客户端和服务器端都能及时发现,从而保证第6步的对称加密密钥不落入第三方手中,整个流程如下图所示: