4

我是实现 FTP 客户端 ( WinSCP ) 的开源开发人员。

我正在尝试从传输套接字上的 FTP 控制套接字恢复 TLS/SSL 会话。一些 FTP 服务器开始需要这个。

例如 vsftpd:
https ://scarybeastsecurity.blogspot.com/2009/02/vsftpd-210-released.html


我正在使用 OpenSSL 来实现 SSL 层。

我已经尝试了实现会话恢复的明显方法,即使用SSL_get1_sessionand SSL_set_session,就像这里:
https ://www.linuxjournal.com/article/5487

虽然它不起作用。我仍然无法连接到任何需要 TLS 会话恢复的 FTP 服务器(如 vsftpd)。

我怀疑问题可能是由于在我的情况下,有两个并行的 TLS 连接,它们不能共享同一个 TLS 会话。这与 linuxjournal.com 上的示例不同,其中第一个连接在打开另一个连接之前关闭。

我还尝试了几种克隆会话的方法,例如使用i2d_SSL_SESSION/ d2i_SSL_SESSION。也没有帮助。

我真的被困在这里了。

提前感谢您的帮助。

4

2 回答 2

4

最终使用SSL_get1_sessionSSL_set_session工作。第一次尝试时,我一定是错误地使用了它们。

于 2015-09-08T10:51:43.553 回答
2

您必须在SSL_CTX对象上专门启用客户端会话缓存:

SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_CLIENT);

您可能还需要增加默认会话缓存超时(默认为 300 秒),使用SSL_CTX_set_timeout().

(您还必须SSL从同一个对象创建SSL_CTX对象)。

于 2011-10-28T00:59:13.027 回答