Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
使用openssl s_客户端连接以非交互方式获取握手后新会话票证_Ssl_Openssl_Tls1.3 - Fatal编程技术网

使用openssl s_客户端连接以非交互方式获取握手后新会话票证

使用openssl s_客户端连接以非交互方式获取握手后新会话票证,ssl,openssl,tls1.3,Ssl,Openssl,Tls1.3,我正在尝试使用以下命令自动进行TLS握手,并在.pem文件中获取会话信息: openssl s_client -connect www.domain.com:443 -sess_out domain.pem 每次输入该命令时,都会启动连接并等待用户输入(如GET)。我的第一个目标是避免这种情况(只要在收到会话信息时关闭会话,然后移动到下一个域)。第二个目标是获取会话信息 此线程提供了一个局部解决方案,在TLS 1.2协商时可以正常工作(因为设置会话是握手的一部分): 因此,对于试图解决TLS

我正在尝试使用以下命令自动进行TLS握手,并在.pem文件中获取会话信息:

openssl s_client -connect www.domain.com:443 -sess_out domain.pem
每次输入该命令时,都会启动连接并等待用户输入(如GET)。我的第一个目标是避免这种情况(只要在收到会话信息时关闭会话,然后移动到下一个域)。第二个目标是获取会话信息

此线程提供了一个局部解决方案,在TLS 1.2协商时可以正常工作(因为设置会话是握手的一部分):

因此,对于试图解决TLS 1.2问题的读者,这里有一个很好的解决方案:

echo -n | openssl s_client -connect www.domaintls1-2.com:443 -sess_out ticket1-2.pem
现在我的问题是,对于TLS1.3,会话信息是在握手之后发送的。因此,我需要启动一个GET(或HEADER,甚至发送一个错误的请求)来获取握手后的新会话票证,并将其保存在该.pem文件中


手动完成时,它可以正常工作,但使用echo不起作用(我尝试了
echo“GET”| openssl…
openssl…,当使用stdin管道时,s|U客户端将在其到达EOF时关闭。因此,正如您在上面正确标识的,只要“GET”一出现,连接就会关闭命令已发送。要解决此问题,可以使用s_客户端选项“-ign_eof”这将使s|U客户端进程在不考虑EOF的情况下保持运行。不幸的是,随后您将不得不以某种方式关闭它…我没有解决方案。如果您的总握手时间始终不超过$X,
sleep$X | openssl s|U客户端…
使用GNU coreutils,您甚至可以使用小数秒。这取决于您的网络或服务器通常不会花太多时间,因为有人下载了一段视频,或者猫路过了AP.PS:Ubuntu只在4月4日和10月10日发布。这不是一个真正的编程问题。我的问题不是关闭连接,也可以使用上述命令来完成。而是检索握手后的新文件我在手动输入GET时可以看到的会话票据,但不是通过回音或其他方式。@dave_thompson_085抱歉,如果这是错误的发布位置,我在这里看到了一些类似的问题,所以我想我可能会在这里添加我的问题,最后我感觉我键入了错误的命令(所以编程问题仍然存在?)SO的主题性最近(大约在过去2年)变得更加严格,因为现在大约有100个其他堆栈来处理大多数计算机相关和一些非计算机相关的主题。但是仍然有许多较旧的Qs(和As)这么多年前,当选择较少或没有更好的选择时,人们会问。这里有一个相当模糊的边界:仅仅运行或使用程序不是编程,但shell脚本可以,以及其他主要的脚本语言,如perl、powershell、autohotkey。但正如我所说,
sleep
是解决您问题的简单答案。