你如何将“回声”传递给“openssl”?

时间:2013-10-02 21:38:33

标签: openssl

我只是尝试向启用SSL的Web服务器提交“OPTIONS / HTTP / 1.0”请求;但是,在运行时,我只是简单地在连接结束时“完成”。

这是我正在使用的确切命令:

echo -e "OPTIONS / HTTP/1.0\r\n\r\n" | openssl s_client -connect site.com:443

有什么建议吗?我确定我错过了很简单的事情。

3 个答案:

答案 0 :(得分:48)

有一个-ign_eof选项可以完全按照您的要求进行操作而不会出现任何问题。它显然是自2000年以来的代码库(0.9.5a)。

该选项禁止Q和R的特殊解释,并忽略stdin上的EOF。相反,它等待连接关闭。

答案 1 :(得分:24)

在这个帖子中讨论了这个问题(链接的电子邮件只有简单的答案,我将在下面重复):http://www.mail-archive.com/openssl-users@openssl.org/msg02937.html

(echo "GET /"; sleep 10) | openssl s_client -connect news.ycombinator.com:443
问题是,一旦stdin关闭,s_client就会关闭。所以你的代码工作正常,但是在接收到OPTIONS之后和接收服务器响应之前,s_client正在退出。

答案 2 :(得分:12)

迟到的答案......

似乎你添加了一只“猫”。在你的子shell中它起作用。

(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 headesr / bodies从命令行传递到ssl服务器。