1、http和https区别
- http:超文本传输协议(HyperText Transfer Protocol)是用于从服务器传输超文本到本地浏览器的传输协议。可以使浏览器更加高效。以明文发送信息,若黑客截取了浏览器和服务器之间的传输报文,就可以直接获得其中的信息。
- https: 超文本传输安全协议(Hypertext Transfer Protocol Secure) 是一种通过计算机网络进行安全通信的传输协议。
https经由http进行通信,但利用SSL/TLS来加密数据包。
https开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
简而言之: https是在http上建立ssl加密层,并对传输数据进行加密,是http协议的安全版。
简言之区别如下:
- http 是明文传输,HTTPS 通过 SSL\TLS 进行了加密
- http 的端口号是 80,HTTPS 是 443
- https 需要到 CA 申请证书,一般免费证书很少,需要交费
- http 的连接简单,无状态;https 协议是由http+SSL/TLS 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全
2、https证书签名,证书分发以及证书验证的整个过程
1)服务端人员使用RSA算法生成一个公钥和一个私钥。服务端在将公钥进行分发证书之前需要向CA机构申请给将要分发的公钥进行数字签名。
2)生成数字签名公钥证书:对于CA机构来说,其也有两个密钥,CA私钥和CA公钥。CA机构将服务端的Public Key作为输入参数将其转换为一个特有的Hash值。然后使用CA私钥将这个Hash值进行加密处理,并与服务端的Public Key绑定在一起,生成数字签名证书。其实数字签名证书的本质就是服务端的公钥+CA私钥加密的Hash值。(CA私钥负责签名,CA公钥负责验证)
3)服务器获取到这个已经含有数字签名并带有公钥的证书,将该证书发送给客户端。当客户端收到该公钥数字证书后,会验证其有效性。大部分客户端都会预装CA机构的公钥,也就是CA公钥。客户端使用CA公钥对数字证书上的签名进行验证,这个验证的过程就是使用CA公钥对CA私钥加密的内容进行解密,将解密后的内容与服务端的Public Key所生成的Hash值进行匹配,如果匹配成功,则说明该证书就是相应的服务端发过来的。否则就是非法证书。
4)验证完服务端公钥的合法性后,就可以使用该公钥进行加密通信了。

3、描述https通信过程
SSL的加密过程是RSA与AES混合进行的。简单概括一下,就是通过RSA加密方式来交换AES加解密的密钥,然后使用AES加密的方式来传输报文。大体可以分为四步:
1)客户端发起第一次握手,目的是从服务端获取数字签名证书,服务端在发送数字签名证书之前要先确认客户端的SSL版本、加密算法等信息
2)接着进行第二次握手。客户端收到证书后发起第二次握手,目的是将AES加解密使用的Key (Pre-master secret)发送给服务端(公钥进行加密的AES_KEY)。服务端收到后用私钥进行解密得出AES_KEY。这样客户端和服务端经过二次握手后都持有了AES加解密的KEY
3)当Client与Server端都持有AES_KEY后,就可以对HTTP报文进行加解密了
4)最后就是断开连接了
