本文参考这边文章服务器
下面是我理解的HTTPS工做原理:加密
1.首先客户端想服务端发送请求,服务器会下发证书(公钥,能够把公钥理解成一个锁头,能够有不少把,用来锁住你想保密的东西,只有一个私钥(钥匙)能打开它)给客户端;操作系统
2.客户端拿到证书后,用证书加密一个随机数(之后和服务器通信就用这个随机数防伪),传给服务器(给数据上锁发给服务器)。get
3.由于只有服务器有私钥,因此只有服务器拿到刚刚客户端加密的随机数才能正确解密。服务器解密后拿到随机数,就知道从此就使用这个随机数做为新的私钥和客户端通信。原理
4.服务器用新的私钥加密数据返回给客户端告诉它,我知道了。随机数
5.客户端收到消息后,用刚刚的随机数对信息解密,肯定服务器已经拿到私钥了。请求
客户端:您好,请给我公钥。数据
服务器:好的,这是个人证书(该公司到权威机构认证后,操做系统中会加入该公司的公钥到操做系统出厂设置中),加密后的公钥(这个加密公钥,使用操做系统中保存的权威机构的公钥来解密)客户端
客户端:好的,这是我加密后的私钥(使用公钥加密的)服务端
服务器,好的,我知道你的私钥了,之后就用它来通信