https并不是一个新的协议,是对http进行加密后的协议
http协议是一个字符串明文协议,通信容易被监听劫持不安全,因此需要加密保证安全可靠传输
s-ssl-套接字安全层协议
ssl协议建立在可靠的传输协议(TCP协议)之上,在TCP建立连接之后,实际数据传输之前,通信双方通过身份验证和加密传输实现整体的安全传输
区别
HTTP协议以明文方式发送内容,HTTPS数据传输过程是加密的;
HTTP采用80端口,HTTPS采用443端口;
HTTP页面响应比HTTPS快-HTTP使用3次握手建立连接,客户端和服务器需要握手3次,而HTTPS除了TCP的3次握手,还需要精力一个ssl的协商过程;
https加密流程
身份验证-防止劫持-通过CA认证实现,身份需要验证的一方(服务端)到权威机构颁发一个CA证书,通信前,服务端将证书发送给客户端,客户端解析证书得到各个元素信息,根据证书中的信息到权威机构进行身份验证
加密传输-防止监听-ssl采用混合加密;先使用非对称加密,在非对称加密通信过程中协商一个对称秘钥,往后通信使用对称秘钥进行加密;使用非对称加密通信保证对称秘钥的协商不会被劫持,往后通信使用对称加密,既保证安全也保证效率
详细流程
1.服务器通过非对称加密算法生成一对秘钥(公钥和私钥),拿着公钥去权威机构生成CA证书,证书中包含自己的机构信息、权威机构信息、证书有效期、公钥信息等
2.在tcp建立连接后,服务器首先将自己在权威机构颁发的证书发送给客户端
3.客户端收到证书后,解析得到机构信息以及公钥信息,然后去自己信任的权威机构对当前服务器进行身份验证,通过则通信继续,否则可以选择中断通信
4.客户端拿着证书中的公钥加密自己要发送给服务端的数据,数据中包含自己支持的对称加密算法列表以及一个随机数
5.服务端收到客户端的公钥加密数据后,使用私钥进行解密,得到对方的对称算法列表和随机数,然后给客户端也回复一个随机数
6.双方通过自己与对方的随机数以及算法列表计算最终得到一个对称加密算法进行加密传输