如何解决使用 openssl s_client -connect
我正在尝试使用以下命令自动执行 TLS 握手并获取 .pem 文件中的会话信息:
openssl s_client -connect www.domain.com:443 -sess_out domain.pem
每次输入该命令时,都会启动一个连接并等待用户输入(例如 GET)。我的第一个目标是避免这种情况(只需在收到会话信息时关闭会话,然后移动到下一个域)。第二个目标是获取会话信息。
这个线程提供了一个部分解决方案,当 TLS 1.2 被协商时工作得很好(因为设置会话是握手的一部分): https://unix.stackexchange.com/questions/47852/openssl-s-client-hangs
对于试图解决 TLS 1.2 问题的读者,这里有一个很好的解决方案:
echo -n | openssl s_client -connect www.domaintls1-2.com:443 -sess_out ticket1-2.pem
现在我的问题是对于 TLS 1.3,会话信息在握手之后发送。所以我需要启动一个 GET(或 HEADER,甚至发送一个错误的请求)来获取握手后的新会话票,并将其保存在那个 .pem 文件中。
手动完成时它工作正常,但使用回声不起作用(我尝试了 echo "GET" | openssl ...
、openssl ... <<< GET
、openssl s_client -connect www.domaintls1-3.com:443 -sess_out test1_3.pem < /dev/null
,但在所有这些情况下,我猜连接是只是在握手后关闭,并且不考虑即将到来的握手后票证以保存在 .pem 文件中。
我很乐意测试任何建议,我的想法快用完了!
系统:Ubuntu 20.01
OpenSSL 版本 1.1.1f 2020 年 3 月 31 日
编辑:更改标题以强调问题在于握手后信息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。