java面试查漏补缺——https面试

简单说:

1.传输内容是对称加密

2.这个对称加密的密钥由客户端随机生成,通过非对称加密传给服务端

3.非对称加密公钥由服务端通过证书发送给客户端。

4.证书校验:根证书里面的公钥对签名进行解密,比对签名

详细原理见

https://blog.csdn.net/ly131420/article/details/38400583

脑洞问题:

1。为什么传输内容不直接用非对称加密呢?

加密效率问题,一个是传输内容本身加解密的效率,另一个是对称加密在一次请求与响应中,可以协商一次密钥即可。而假如用非对称加密,客户端request加密需要协商一次,那服务器response是不是又需要一次呢?(个人理解)

2.传输内容既然是对称加密,有没有可能截获加密后的内容,算出密钥呢?

请求的时候,客户端告诉服务器,本次请求的对称加密密钥key,服务端响应的时候,客户端本地就已经知道用什么密钥解密。每次请求,密钥不一样。

3.还有个连环问题,公钥的合法性怎么保证呢?

公钥放在证书里面,证书是真的,那么公钥就是真的。

证书的校验由根证书根证书根证书来辅助,根证书里面有另一个公钥,可以对证书的签名进行解密,之后验证。具体就是,用根证书里面的公钥先解密签名,解不了,说明证书是假的。解开签名之后,对证书内容进行hash,看是不是一致,比对不一致,说明证书是真的,但是内容被改了。都通过才能说明证书以及证书内容都是真的。

 

你可能感兴趣的:(java面试查漏补缺,https,公钥,数字证书)