Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 在重用会话时更改SSL协议版本_Security_Ssl_Openssl - Fatal编程技术网

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

Security 在重用会话时更改SSL协议版本,security,ssl,openssl,Security,Ssl,Openssl,我正在使用ssl3连接到服务器。当使用-reconnect指定-change\u session\u version选项时,我希望会话协议从SSLv3更改为SSLv2 这是我的命令:apps/openssl s\u client-connect 10.102.113.3:443-reconnect-change\u session\u version-ssl3 现在,我知道我应该有以下代码: if(change_session_version) s->session->ssl

我正在使用
ssl3
连接到服务器。当使用
-reconnect
指定
-change\u session\u version
选项时,我希望会话协议从
SSLv3
更改为
SSLv2

这是我的命令:
apps/openssl s\u client-connect 10.102.113.3:443-reconnect-change\u session\u version-ssl3

现在,我知道我应该有以下代码:

if(change_session_version)
    s->session->ssl_version = SSL2_VERSION;
if(change_session_version)
    s->version = SSL2_VERSION;
或此代码:

if(change_session_version)
    s->session->ssl_version = SSL2_VERSION;
if(change_session_version)
    s->version = SSL2_VERSION;
我不知道该把代码放在哪里

我已在
ssl.h
中将
change\u session\u version
声明为
int
,如果指定了
-change\u session\u version
选项,则已将其设置为
1


请帮帮我

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

您的问题在术语上存在矛盾。SSL中的“会话”包括协议、密码套件、密钥材料和对等证书。在不创建新会话的情况下,无法更改任何会话


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

好的,是否可以将其从
SSLv3
更改为
TLS 1.2
?我应该把代码放在哪里<代码>如果(更改会话版本)->version=TLS1\U 2\U版本这可能取决于服务器实现。会话票证仅在TLS1.0之后可用,建议在票证中对协议版本进行编码。会话ID较旧,它取决于存储在那里的服务器。如果您只想尝试一下它是否有效,您可以查看
s_客户端
-sess_out
-sess_in
参数,然后尝试使用另一个协议版本恢复会话。@RandomlyNamedUser您根本无法这样做。这没有道理。您只能在自己的会话数据副本中更改它。对等方对此一无所知,共享同一会话的任何其他对等方也不会知道。你必须重新握手并协商一个新会话。啊,所以当你想重用一个连接,并且在重用之前尝试更改
版本时,
SSL
变量版本的更改被忽略,因为通信已经在一个已经建立的通道上发生了?它将被忽略,因为会话已经存在,更不用说连接了。如果您甚至可以对变量进行写访问,那将是令人惊讶的。当然,除了刷新密钥之外,没有任何SSL机制可以对现有的在线会话执行任何操作。