我是否需要客户端私钥来建立安全的 TLS/SSL 连接?

Lui*_*igi 1 embedded ssl https tls1.2 mbedtls

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

我的问题是:

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

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

问候,

Ste*_*ich 5

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

正确的

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

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

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

我还需要客户端私钥来建立加密连接吗?如果不是,客户端私钥是否应该与服务器私钥执行相同的操作,但在客户端?

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

  • @Luigi:我不知道你也引用了什么代码,但只有在进行相互身份验证时才需要客户端的私钥。 (2认同)