简单说:
1.传输内容是对称加密
2.这个对称加密的密钥由客户端随机生成,通过非对称加密传给服务端
3.非对称加密公钥由服务端通过证书发送给客户端。
4.证书校验:根证书里面的公钥对签名进行解密,比对签名
详细原理见
https://blog.youkuaiyun.com/ly131420/article/details/38400583
脑洞问题:
1。为什么传输内容不直接用非对称加密呢?
加密效率问题,一个是传输内容本身加解密的效率,另一个是对称加密在一次请求与响应中,可以协商一次密钥即可。而假如用非对称加密,客户端request加密需要协商一次,那服务器response是不是又需要一次呢?(个人理解)
2.传输内容既然是对称加密,有没有可能截获加密后的内容,算出密钥呢?
请求的时候,客户端告诉服务器,本次请求的对称加密密钥key,服务端响应的时候,客户端本地就已经知道用什么密钥解密。每次请求,密钥不一样。
3.还有个连环问题,公钥的合法性怎么保证呢?
公钥放在证书里面,证书是真的,那么公钥就是真的。
证书的校验由根证书根证书根证书来辅助,根证书里面有另一个公钥,可以对证书的签名进行解密,之后验证。具体就是,用根证书里面的公钥先解密签名,解不了,说明证书是假的。解开签名之后,对证书内容进行hash,看是不是一致,比对不一致,说明证书是真的,但是内容被改了。都通过才能说明证书以及证书内容都是真的。
本文介绍了https加密原理,传输内容采用对称加密,对称密钥由客户端随机生成并通过非对称加密传给服务端,非对称公钥由服务端通过证书发送。还探讨了相关脑洞问题,如为何不用非对称加密传输内容、能否截获加密内容算出密钥、如何保证公钥合法性等。
396

被折叠的 条评论
为什么被折叠?



