1

我在嵌入式设备上遇到了一个 mbedTLS 示例,我在下载固件之前看到了服务器证书验证(以 github.com 为例),但唯一编码的证书/密钥是 github (CA 链,而不是 github 证书)本身)。

我的问题是:

  1. 如果我执行服务器 CA 验证,我只需要 CA 证书吗?
  2. 经服务器验证,两者之间的通信是否完全加密,也就是说固件文件是明文暴露的还是加密的?加密是使用服务器的私钥完成的吗?(我想它在github服务器上)。如果不是,服务器私钥有什么用?正直?
  3. 我是否还需要客户端私钥来建立加密连接?如果不是,客户端私钥是否应该与服务器私钥做同样的事情,但在客户端?

我对答案有一个大致的了解,但我需要确定性。

问候,

4

1 回答 1

5

如果我执行服务器 CA 验证,我只需要 CA 证书吗?

正确的

经服务器验证,两者之间的通信是否完全加密,也就是说固件文件是明文暴露的还是加密的?加密是使用服务器的私钥完成的吗?(我想它在github服务器上)。如果不是,服务器私钥有什么用?正直?

服务器证书的验证是 TLS 握手的一部分,但不是握手的结束。只有在握手完成后,数据才会被加密,而且在握手完成之前不会传输任何应用程序数据。因此,通过 TLS 传输的固件使用客户端和服务器商定的任何密码进行加密 - 这可能是弱密码或强密码。

应用程序数据不是由任何私钥加密的,而是由对称密码术加密的。有关更多详细信息,请参阅SSL/TLS 如何工作

我是否还需要客户端私钥来建立加密连接?如果不是,客户端私钥是否应该与服务器私钥做同样的事情,但在客户端?

客户端不需要用于加密的私钥。除此之外,服务器的私钥应该保密(私有),因此客户端不可能只使用服务器的私钥。再次,请参阅SSL/TLS 如何工作以了解详细信息。

于 2017-09-26T06:50:31.550 回答