Как вы нажимаете "эхо" на "openssl"?

Я просто пытаюсь отправить запрос "OPTIONS/HTTP/1.0" на веб-серверы с поддержкой SSL; однако при запуске этого я просто получаю "DONE". В конце соединения.

Вот точная команда, которую я использую:

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

Любые предложения? Я уверен, что мне не хватает чего-то очень простого.

Ответ 1

проблема обсуждается в этом потоке (связанное письмо имеет единственный простой ответ, который я повторю ниже): http://www.mail-archive.com/[email protected]/msg02937.html

(echo "GET /"; sleep 10) | openssl s_client -connect news.ycombinator.com:443

проблема заключается в том, что s_client выключается, как только stdin закрывается. поэтому ваш код работает нормально, но s_client выходит после получения OPTIONS и до получения ответа сервера.

Ответ 2

Здесь есть опция -ign_eof, которая делает именно то, что вы хотите, без хаков. Это было в кодовой базе с 2000 года (0.9.5a), по-видимому.

Опция подавляет специальную интерпретацию Q и R и игнорирует EOF на stdin. Вместо этого он ждет закрытия соединения.

Ответ 3

Поздний ответ...

кажется, если вы добавите "кошку" в свою подоболочку, она работает.

(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/body из командной строки на сервер ssl.