【问题标题】:How long is an established SSL connection valid?已建立的 SSL 连接的有效期是多久?
【发布时间】:2021-08-29 18:01:18
【问题描述】:

假设我通过 ssl 向 api 发送“hello”。我的理解是通过 ssl 建立一个对称密钥交换,然后使用该对称密钥对消息“hello”进行加密并发送到另一台服务器。

现在我的问题是,下次我发送“hello 2”时,对称密钥交换会再次发生吗?我的猜测是,如果它是持久连接,则不需要再次进行密钥交换。有人可以确认吗?

【问题讨论】:

    标签: ssl


    【解决方案1】:

    Meta:在我看来,这不是编程,虽然它可能是开发并且大部分是欺骗How long does SSL connection between a client and a server persist?

    这取决于在 SSL 之上使用的应用程序协议(自 1999 年以来,它实际上是 TLS,尽管很多东西,例如实现类仍然使用旧名称),通常是两端的实现。例如,HTTP/1.1 默认为连接持久化(这通常在 1.0 中作为一个名为 keep-alive 的扩展完成),但任一端点都可以通过指定 connection: close 来更改此设置,即使连接保持打开也可以选择关闭之后的任何时候,也许在一两分钟之后,也许在一天或一周之后。浏览器中的 HTTPS 实现通常会保持连接打开一段时间,但对打开的连接总数有限制,因此最近未使用的连接可能需要在打开其他连接时关闭。其他应用程序、库和平台各不相同。其他协议也有所不同;例如,使用 SMTPS 的电子邮件代理通常会建立连接,传输一封或多封电子邮件,然后断开连接。

    此外,通过 1.2 的 SSL-now-TLS 支持 会话恢复,它允许保存在一个连接上执行的密钥交换(和其他握手结果)(在两个端点,或使用 '票”选项,仅在客户端)并在新连接上重用,只要端点同意;实现通常称此会话缓存。参见例如RFC 5246 section 7.3 特别是从第 36 页中间开始的部分,对于一个相当常见的服务器 (Apache),请参阅 SessionCache and SessionCacheTimeout directives。恢复使用新的握手,但在该握手中不使用完整的密钥交换。

    但是,如果端点的会话缓存受到破坏,这会产生安全漏洞,因此 TLS 1.3 使用动态创建的 PSK 用不同的方法替换它;见RFC 8446 section 2.2。这允许提供forward secrecy 的部分握手(使用 [EC]DHE 进行实际的密钥交换,但通过 PSK 与前一个会话相关联的身份验证而不是基于证书的完整身份验证)或最小的握手(同时使用 PSK 作为新的初始密钥和用于身份验证),而不是。

    如果您想了解特定软件和特定服务器的答案,您需要查看该软件和这些服务器的功能和配置,通常还需要查看当前状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 2020-03-31
      • 2010-10-25
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      相关资源
      最近更新 更多