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

时间:2017-09-26 06:14:10

标签: ssl https embedded tls1.2 mbedtls

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

我的问题是:

  1. 如果我执行服务器CA验证,我只需要CA证书吗?
  2. 验证服务器之后,两者之间的通信是否完全加密,意思是固件文件是以透明方式曝光还是加密?加密是否使用服务器的私钥完成? (我想它是在github服务器上)。如果没有使用服务器私钥的话?完整性?
  3. 我还需要客户端私钥来建立加密连接吗?如果不是,客户端私钥应该在服务器私钥上做同样的事情,但在客户端呢?
  4. 我对答案的概念有一个大概,但我需要确定。

    此致

1 个答案:

答案 0 :(得分:2)

  

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

正确

  

验证服务器后,两者之间的通信是否完全加密,意思是固件文件是以明文形式公开还是加密?加密是否使用服务器的私钥完成? (我想它是在github服务器上)。如果不是什么使用服务器私钥?完整性?

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

应用程序数据不是通过任何私钥加密,而是通过对称加密。有关详细信息,请参阅How does SSL/TLS work

  

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

客户端不需要私钥进行加密。除此之外,服务器私钥应保密(私有),因此客户端不可能只使用服务器私钥。再次,请参阅How does SSL/TLS work了解详细信息。