重用会话时更改 SSL 协议版本

Change SSL protocol version while reusing session

我正在使用 ssl3 连接到服务器。当 -change_session_version 选项与 -reconnect 一起指定时,我希望会话协议从 SSLv3

更改为 SSLv2

这是我的命令:apps/openssl s_client -connect 10.102.113.3:443 -reconnect -change_session_version -ssl3

现在,我知道我应该有这个代码:

if(change_session_version)
    s->session->ssl_version = SSL2_VERSION;

或此代码:

if(change_session_version)
    s->version = SSL2_VERSION;

虽然我不知道把这段代码放在哪里。

我已将 change_session_version 声明为 ssl.h 中的 int,如果指定了 -change_session_version 选项,则将其设置为 1

请帮帮我!

我认为这是不可能的。首先,SSLv2 实际上不再受支持,大多数堆栈甚至不实现它,而其他堆栈已禁用它。然后根本不支持 SSLv2 中的会话恢复。

你的问题是用语自相矛盾。 SSL 中的 'session' 包括协议、密码套件、密钥 material 和对等证书。如果不创建新会话,则无法更改其中任何一个。

EDIT 仅更改一块本地内存中的变量不可能完成任何有用的事情。对等点不会知道它,在其他连接上共享会话的其他对等点也不会知道它。您必须重新握手并协商 会话。