代码之家  ›  专栏  ›  技术社区  ›  self_learner_localhost

curl、浏览器和移动应用程序使用哪个键值对和证书进行https调用?

  •  0
  • self_learner_localhost  · 技术社区  · 1 年前

    我已经了解到,在tcp连接设置过程中会发生一次tls握手,这涉及到公钥和tls证书的交换。

    我的问题是程序喜欢哪里 curl ,我们的浏览器和移动应用程序从中获取这些密钥,因为如果我不在计算机或手机上创建它们,并且 .ssh 目录,它们在哪里?如果我跑步 curl https://whatever 或者在我的浏览器或移动应用程序中打开https链接,它们是自己生成的还是由操作系统提供的?如果是,它们放在哪里?

    如果我对此的理解有差距,我很抱歉,我是新手。如果需要,请纠正我。

    1 回复  |  直到 1 年前
        1
  •  0
  •   smallpepperz    1 年前

    对于TLS 1.3之前的TLS版本,密钥由HTTP客户端当场生成,作为TLS握手的一部分。服务器的公钥由主机存储,并在交换开始时发送给客户端,客户端生成对称密钥并将其发送回,使用公钥进行加密。对称密钥在连接完成后不需要保留,因此通常存储在系统的内存中,而不是磁盘上。

    为了更直接地回答,涉及两个密钥:服务器的公钥和通信的对称密钥。服务器的公钥存储在服务器上,而不是由您的设备生成,因此客户端不会将其保存在任何位置。对称密钥由客户端在TLS握手期间生成并发送到服务器,但交换完成后就不需要它了,所以它也不存储在RAM之外。

    有关密钥交换过程的更多信息,请查看