https的理解
上一篇简单的了解了http的过程,那https的实现过程又是怎样的呢?
其实上网找了很多的资料,其实之前一直对这些协议的实现一点都不懂,只是单纯的在网上找教程,下个证书直接服务器配置一下,然后可以用了就好。
https数据过程中是怎么做到加密的呢?
从字面上意思去理解,就是https传输过程中,所有数据是加密过的,就算被他人非法获取,由于第三方不知道秘钥和加密方式而破解不了。那客户端和服务器怎么约定这个秘钥的呢。
这个时候需要知道客户端和服务器端怎么去约定和交换秘钥,如果在网络上直接以明文交换,这是很不安全的。这个时候引入了CA证书,一个第三方机构颁发证书。这个证书是一个非对称加密方式,会有一个公钥和私钥。公钥用来发送给客户端,私钥用来对客户端数据解密。
服务器部署https,需要去第三方申请证书,这个证书在客户端和服务器交换秘钥起到作用。一下过程:
前提客户端和服务器已经完成http的三次握手
- 服务器会发送一个证书(公钥)给客户端
- 客户端判断证书中内容(比如,证书的签名是否跟请求的服务器一致,这部分有浏览器的TSL去分析证书)。如果证书没问题,就用证书对客户端随机生成的一串字符进行加密(以后数据交流用的秘钥)。
- 服务器的拿到数据,用私钥解密得到客户端发来的秘钥,这样客户端和服务器就安全的约定好了数据交换的秘钥了。第三方没有这个秘钥,就算截取到数据也是破解不了的。
这里涉及到一个问题,客户端和服务器端,为什么最后约定的秘钥是一个对称加密的方式,而不用非对称加密方式。原因是非对称加密比对称加密在计算时比较消耗资源。
这里写的太粗糙了,有一篇文章讲的非常详细。https://blog.csdn.net/cout__waht/article/details/80859369