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

问题描述 投票:0回答:1

我了解到在 tcp 连接设置期间会发生 tls 握手,其中涉及公钥和 tls 证书的交换。

我的问题是像

curl
这样的程序、我们的浏览器和移动应用程序从哪里获取这些密钥,因为如果我没有在计算机或手机上创建它们,并且
.ssh
目录中没有任何内容,那么它们在哪里?如果我运行
curl https://whatever
或在浏览器或移动应用程序中打开 https 链接,它们是自己生成还是由操作系统提供?如果是的话,它们放在哪里?

如果我对此的理解存在一些差距,我很抱歉,我对这些东西很陌生。如果有需要请指正。

security ssl https tls1.2
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.