gpt4 book ai didi

openssl - DTLS (OpenSSL) 中的 session ID

转载 作者:行者123 更新时间:2023-12-02 18:53:45 26 4
gpt4 key购买 nike

我正在尝试使用 OpenSSL 实现 DTLS 服务器。我可以获取应用程序数据,但是当客户端和服务器协商后,我注意到服务器上的 session_id 为空。

检查代码,更具体地说是ssl_sess.c,session_id_length显式设置为零,注释引用RFC4507。

我的问题是,当协商连接时,我可以使用什么 ID 来唯一标识客户端?

我注意到在客户端, session ID似乎是从票证中计算出来的,但这似乎不会发生在服务器上。

最佳答案

与任何基于数据报的应用程序相同。每RFC 4347 (数据报传输层安全):

Note that unlike IPsec, DTLS recordsdo not contain any associationidentifiers. Applications mustarrange to multiplex betweenassociations. With UDP, this ispresumably done with host/port number.

(强调我的)

<小时/>

从您的评论来看,您实际上是在尝试跨“ session ”(一个模糊但可能适用的描述符)维护状态。跨“ session ”维护状态是一个应用程序层问题。 (D)TLS 是传输层(因此得名)。

严格来说,通过 (D)TLS 运行的应用程序需要有自己的“客户端 ID”概念,由客户端发送到服务器。有无数种方法可以处理这个问题,具体取决于应用程序的性质和安全要求(当​​然,用户名+密码是最常见的)。

另一种选择是使用客户端证书来替代独立的应用程序层 ID,但这仍然需要应用程序层了解正在发生的情况并将客户端的证书与永久状态信息相关联。令人烦恼的是,这需要为每个客户端管理单独的证书。这实在是太麻烦了,以至于大多数人都不会走这条路。它确实有优点,例如用户无法准确选择错误的密码或将其写在显示器上的便签上。另一方面,如果有人可以访问存储证书的文件,那么游戏就结束了。

当然,许多书籍可以(并且已经非常频繁地)撰写关于安全和身份验证主题的书籍......

关于openssl - DTLS (OpenSSL) 中的 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6167286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com