Как прервать OpenSSL s_client после подключения
(Рецензенты: я также знаю, что это заблуждение на территории SuperUser, но если предыдущий вопрос проскользнул...:))
Это очень похоже на этот вопрос, но в среде Windows (7/8/Server 2008/2012): я использую порт Windows OpenSSL.
Я запускаю
openssl s_client -connect 192.168.0.1:443
из командной строки, чтобы отобразить информацию сертификата. Однако после этого openssl ждет ввода пользователя; Я могу Ctrl + C "разбить" вывод, или каждый просто набирать несколько символов и нажимать return, но мне нужно автоматизировать это - все, что меня действительно интересует, это информация о сертификате.
Как и в предыдущем вопросе, мне нужно каким-то образом прекратить/закрыть соединение. Тем не менее, я попытался подключиться к входным файлам, echo
ing/type
ing ввода в микс, и ничто не похоже на имитацию реального пользователя. Может ли кто-нибудь показать мне, как заставить openssl выйти после подключения?
Ответы
Ответ 1
Вы можете добиться желаемого эффекта, используя трубу для передачи символа "Q". Это делает для одной строки для сценария:
echo "Q" | openssl s_client -connect host:port
Если вы используете достаточно новую версию BASH, вы также можете использовать тройное перенаправление меньше чем вместо конвейера (иногда канал не может использоваться, так как он работает с stdin/stdout):
openssl s_client -connect host:port <<< "Q"
Ответ 2
Ввод буквы "Q" в начале пустой строки приведет к завершению активного соединения. Я видел, как s_client попадает в состояния, где это ничего не делает, но это документированный способ выхода из сеанса.
Если вы хотите сделать это в пакетном режиме, просто создайте текстовый файл с буквой "Q", за которым следует возврат каретки, и направьте его в конец команды следующим образом:
openssl s_client -connect host:port < Q.txt
Я пробовал это, и он работает.