我在嵌入式设备上遇到了一个mbedTLS示例,我在下载固件之前看到了服务器证书验证(github.com为例),但唯一编码的证书/密钥是github(CA链,而非github证书本身)。
我的问题是:
我对答案的概念有一个大概,但我需要确定。
此致
答案 0 :(得分:2)
如果我执行服务器CA验证,我只需要CA证书吗?
正确
验证服务器后,两者之间的通信是否完全加密,意思是固件文件是以明文形式公开还是加密?加密是否使用服务器的私钥完成? (我想它是在github服务器上)。如果不是什么使用服务器私钥?完整性?
服务器证书的验证是TLS握手的一部分,但不是握手的结束。只有在握手完成后,数据才会被加密,但在握手完成之前也不会传输任何应用程序数据。因此,通过TLS传输的固件使用任何密码客户端和服务器协商加密 - 这可能是弱密码或强密码。
应用程序数据不是通过任何私钥加密,而是通过对称加密。有关详细信息,请参阅How does SSL/TLS work。
我还需要客户端私钥来建立加密连接吗?如果不是客户端私钥应该在服务器私钥上做同样的事情,但在客户端?
客户端不需要私钥进行加密。除此之外,服务器私钥应保密(私有),因此客户端不可能只使用服务器私钥。再次,请参阅How does SSL/TLS work了解详细信息。