我一只有个疑问,在serverhello的证书阶段,服务器会向client发送根证书的吗?可是很多地方服务器我并没有配置根证书,但更加奇怪的是 client 依然没有受影响,比如浏览器最多弹个报警出来,但是依然拿到了公钥,可以进行通信。按照道理,client没有 根 的公钥,如何能解开证书,拿到服务器公钥呢?
我一只有个疑问,在serverhello的证书阶段,服务器会向client发送根证书的吗?可是很多地方服务器我并没有配置根证书,但更加奇怪的是 client 依然没有受影响,比如浏览器最多弹个报警出来,但是依然拿到了公钥,可以进行通信。按照道理,client没有 根 的公钥,如何能解开证书,拿到服务器公钥呢?
服务器会传递整个证书链,不过并不必须传递根证书给客户端,即使传递了客户端也会直接忽视掉,用自己已经存下的受信任的根证书。(如果配置过服务器端证书就会发现配不配最后一层根证书都是OK的)
在server hello阶段,服务器会返回证书公钥给客户端。
我理解你问题中没有存储根证书影响的是是否能验签整个证书链(也就是浏览器弹出的证书不受信任),并不会影响获取公钥。