【问题标题】:What is SSL context?什么是 SSL 上下文?
【发布时间】:2015-07-26 06:15:01
【问题描述】:

在为 SSL 编程时,无论您选择哪种语言(C++、Java、Ruby 等),您都可能会遇到要使用的 SSLContext 对象。我不知道SSLContext 的语义是什么意思?当我在 google 上搜索它时,只会出现许多页面来解释这种对象在各种编程语言中的语法用法。

我的问题:SSLContext 在 SSL 方面的含义/作用是什么?不管实现它的语言是什么。

【问题讨论】:

    标签: ssl network-programming


    【解决方案1】:

    SSL Context 是密码、协议版本、可信证书、TLS 选项、TLS 扩展等的集合。由于具有相同设置的多个连接很常见,因此它们被放在一个上下文和相关的 SSL 连接中然后基于此上下文创建。并且要创建新连接,您只需参考上下文,与您必须重新创建所有这些设置的情况相比,这样可以节省时间和内存。

    编辑:@EJP 很好地将这个“集合”描述为工厂。 SSL 上下文与SSL session 不同,即使两者都是设置的集合。会话是您在 SSL 握手后得到的,仅涵盖双方同意的密码和协议版本以及交换的密钥。而上下文涵盖了所有密码和协议版本,以及本地系统(客户端或服务器)在建立新的 TLS 连接时愿意支持的受信任证书列表。因此,SSL 会话描述了已建立的 SSL 关系,而 SSL 上下文描述了建立 SSL 关系所需的内容。

    【讨论】:

    • 您说的是 SSL 会话。
    • @EJP: "...然后基于此上下文创建相关的 SSL 连接..." - 我不是在谈论现有 关系,但关于您在建立联系之前设置的内容。建立连接并进行 SSL 握手后,您将获得会话。
    • 好的,您已经澄清了通过更改“每个连接只需要引用 ...”。 “工厂”的描述不是我的,它是 Javadoc 的。
    • 链接断开 :(
    • @TimGerlach:固定链接
    【解决方案2】:
    • SSLContext:此类的实例表示安全套接字协议实现,它充当安全套接字工厂或 SSLEngines 的工厂。此类使用一组可选的密钥和信任管理器以及安全随机字节源进行初始化。

    • SSLSession:在 SSL 中,会话用于描述两个实体之间的持续关系。每个 SSL 连接一次涉及一个会话,但该会话可以同时或顺序地用于这些实体之间的许多连接。连接上使用的会话也可以被不同的会话替换。作为 SSL 握手协议的一部分,会创建或重新加入会话。会话可能由于影响安全或资源使用的策略或应用程序显式调用无效而无效。会话管理策略通常用于调整性​​能。

    • SSLSessionContext:SSLSessionContext 表示与单个实体关联的一组 SSLSession。例如,它可能与同时参与许多会话的服务器或客户端相关联。 SSLSessionContext 可以配置会话超时。

    【讨论】:

    • "...SSLSession [@SteffenUlrich 在谈论什么]..." - 我不是在谈论会话,因为我在谈论您在建立连接之前所拥有的内容。只有在进行 SSL 握手后才能获得会话,这涉及首先设置底层连接。我说的是你很好地描述为工厂的东西,只是我还说这些工厂覆盖的设置。
    猜你喜欢
    • 2012-08-27
    • 2017-01-21
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 2016-03-21
    相关资源
    最近更新 更多