如何快速了解Https

如何快速了解Https,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

HTTPS简介

HTTPS:https是http与ssl的结合,为了解决http明文传输导致信息泄露的问题。ssl通过公钥和私钥保证客户端和服务器之间的通讯加密,由权威机构办法的数字证书杜绝了中间人攻击的可能。默认端口为443。

SSL需要到ca申请证书,一般免费证书较少,因而需要一定费用。(笔者一直用阿里云,有个免费ssl申请,还是挺适合个人使用的。据说其他云商也有免费ssl)

有关HTTP发展历史和HTTP2的详细讲解,可以点击查看这篇文章

有关HTTP连接中TCP握手挥手过程的详细讲解,可以点击查看这篇文章

HTTPS工作流程

如何快速了解Https

  1. client向server发送请求https://baidu.com,然后连接到server的443端口。

  2. 服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这套证书其实就是一对公钥和私钥。

  3. 传送证书。这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名,服务端的域名信息等内容。

  4. 客户端解析证书。这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值(秘钥)。然后用证书对该随机值进行加密。

  5. 传送加密信息。这部分传送的是用证书加密后的秘钥,目的就是让服务端得到这个秘钥,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  6. 服务段加密信息。服务端用私钥解密秘钥,得到了客户端传过来的私钥,然后把内容通过该值进行对称加密。

  7. 传输加密后的信息。这部分信息是服务端用私钥加密后的信息,可以在客户端被还原。

  8. 客户端解密信息。客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容。

相关名词解释

对称加密算法(symmetric key algorithms)

在对称加密算法中,加密使用的密钥和解密使用的密钥是相同的,因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道,不能对外公开。对称加密算法中,加密和解密都是使用同一个密钥,不区分公钥和私钥。

密钥,一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算法。

非对称加密算法(asymmetric key algorithms)

在非对称加密算法中,加密使用的密钥和解密使用的密钥是不相同的。

注意:私钥加密后的密文,只要是公钥,都可以解密,但是反过来公钥加密后的密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有的人。

中间人攻击

中间人攻击(Man-in-the-MiddleAttack)是指,黑客拦截并篡改网络中的通信数据。又分为被动MITM和主动MITM,被动MITM只窃取通信数据而不修改,而主动MITM不但能窃取数据,还会篡改通信数据。最常见的中间人攻击常常发生在公共wifi或者公共路由上。

图为客户端主动发送消息时: 如何快速了解Https

数字证书的安全传输

为了防止中间人攻击,整个传输过程中亟需解决的是保证客户端收到的公钥是服务端发送的,为此提出了数字证书,数字证书是由权威的CA机构给服务端进行颁发,CA机构通过服务端提供的相关信息生成证书,证书内容包含了持有人的相关信息,公钥,签署者签名信息等,最重要的是公钥在数字证书中。数字证书是如何保证公钥来自请求的服务器呢?数字证书上由持有人的相关信息,通过这点可以确定其不是一个中间人;但是证书也是可以伪造的,如何保证证书为真呢?一个证书中含有三个部分:"证书内容(F1), 加密算法(A),加密密文(F3') ",三者的关系如下图,证书内容F1F会被散列算法SHA1计算出hash值F2,然后使用CA机构提供的私钥进行RSA加密

如何快速了解Https