我只是想向启用 SSL 的 Web 服务器提交“OPTIONS / HTTP/1.0”请求;但是,在运行它时,我只是在连接结束时得到“DONE”。
这是我正在使用的确切命令:
echo -e "OPTIONS / HTTP/1.0\r\n\r\n" | openssl s_client -connect site.com:443
有什么建议么?我确定我错过了一些非常简单的东西。
我只是想向启用 SSL 的 Web 服务器提交“OPTIONS / HTTP/1.0”请求;但是,在运行它时,我只是在连接结束时得到“DONE”。
这是我正在使用的确切命令:
echo -e "OPTIONS / HTTP/1.0\r\n\r\n" | openssl s_client -connect site.com:443
有什么建议么?我确定我错过了一些非常简单的东西。
有一个-ign_eof
选项可以完全满足您的需求,而无需任何黑客攻击。显然,它自 2000 年 (0.9.5a) 以来一直在代码库中。
该选项抑制 Q 和 R 的特殊解释,并忽略标准输入上的 EOF。相反,它等待连接关闭。
这个问题在这个线程中讨论(链接的电子邮件有唯一简单的答案,我将在下面重复): http: //www.mail-archive.com/openssl-users@openssl.org/msg02937.html
(echo "GET /"; sleep 10) | openssl s_client -connect news.ycombinator.com:443
问题是 s_client 在标准输入关闭后立即关闭。所以你的代码工作正常,但 s_client 在收到 OPTIONS 后和收到服务器响应之前退出。
迟到的答案...
似乎如果您将“猫”添加到您的子外壳中,它就可以工作。
(echo -ne "GET / HTTP/1.1\r\nHost: google.com\r\n\r\n" ; cat ) | openssl s_client -connect google.com:443
那个“猫”在附近徘徊,然后您实际上可以继续手动与 s_client 交互。我在这里只做了一个测试,但我需要同样的能力来将 http headersr/bodies 从命令行传输到 ssl 服务器。