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

标签 ssl https embedded tls1.2 mbedtls

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

我的问题是:

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

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

问候,

最佳答案

If i perform a server CA verification do i only need the CA certs right?

正确

After the verification of the server, is the communication between the two encrypted at all, meaning is the firmware file exposed in clear or is it crypted? Is the encryptiong done using the private key of the server? (which i suppose it is on the github server). If not what's the use of the server private key? Integrity?

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

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

Do i also need a client private key to establish an encrypted connection? If not is the client private key supposed to do the same thing of the server private key but on client side?

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

关于ssl - 我是否需要客户端私钥来建立安全的 TLS/SSL 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46419047/

相关文章:

asp.net - 无法将 Web 配置转换与 securitySwitch 一起使用。可能的解决方法?

java - 试图理解 Java 中的 SSL 证书

使用 ULPOSC32K 在 Atmel SAM L21 Xplained Pro 中配置 RTC - 频率错误

php - 在 PHP 中通过 SSL 连接到 AWS mysql?

wcf - IIS - WCF 4.0 调用 Java(无法为 SSL/TLS 建立安全通道)

Javascript 代码抛出异常 - 访问被拒绝。仅限 HTTPS。仅限 Internet Explorer

http - 使用 SAML 和 https 或 http

google-chrome - 在Chrome中避免在HTTP上使用NavigatorUserMediaError "Only secure origins are allowed"

c - 快速查找某个值是否存在于 C 数组中?

linux - 以编程方式区分 DDR3