在进行 SSL 编程时,无论您选择哪种语言(C++、Java、Ruby 等),您都可能会遇到要使用的
SSLContext
对象。我不知道SSLContext
在语义上意味着什么?当我在谷歌上搜索它时,有很多页面解释了此类对象在各种编程语言中的语法用法。
我的问题:
SSLContext
在 SSL 方面意味着什么/做什么?无论实现它的语言是什么。
SSL 上下文 是密码、协议版本、可信证书、TLS 选项、TLS 扩展等的集合。由于具有相同设置的多个连接很常见,因此它们被放在一个上下文中,相关的 SSL 连接是然后根据这个上下文创建。要创建新连接,您只需要引用上下文,与必须重新创建所有这些设置的情况相比,这可以节省时间和内存。
编辑:@EJP 很好地将这个“集合”描述为工厂。 SSL 上下文与SSL 会话不同,即使两者都是设置的集合。会话是 SSL 握手后获得的内容,仅包含双方同意的密码和协议版本以及交换的密钥。而上下文涵盖了所有密码和协议版本,以及本地系统(客户端或服务器)在建立新的 TLS 连接时愿意支持的受信任证书列表。因此,SSL 会话描述了已建立的 SSL 关系,而 SSL 上下文描述了建立 SSL 关系所需的内容。
SSLContext:
此类的实例表示安全套接字协议实现,充当安全套接字工厂或 SSLEngine 的工厂。此类使用一组可选的密钥和信任管理器以及安全随机字节源进行初始化。
SSLSession
:在 SSL 中,会话用于描述两个实体之间的持续关系。每个 SSL 连接一次涉及一个会话,但该会话可以同时或顺序地用在这些实体之间的许多连接上。连接上使用的会话也可以被不同的会话替换。作为 SSL 握手协议的一部分,创建或重新加入会话。由于影响安全或资源使用的策略,或者应用程序显式调用无效,会话可能会失效。会话管理策略通常用于调整性能。
SSLSessionContext
:SSLSessionContext 表示与单个实体关联的一组 SSLSession。例如,它可以与同时参与多个会话的服务器或客户端相关联。。 SSLSessionContext
可以配置会话超时。