openssl зависает и не выходит - PullRequest
       21

openssl зависает и не выходит

31 голосов
/ 26 февраля 2012

Я пытаюсь использовать openssl для получения сертификата, и кажется, что он продолжает зависать.Я провел много исследований, но не все доступные опции работают на Windows.

openssl s_client -showcerts -connect google.com:443 > cert.txt

Я пробовал это:

openssl s_client -connect xyz:443 < quit.txt > cert.txt

Где quit.txt содержит "quit\ n "с http://bytes.com/topic/php/answers/8802-automate-openssl-s_client-command-batch-php-script

Это не сработало.Я также посмотрел на сценарии Openssl s_clinet -connect.Принудительно завершить помощь

Я также пытался -prexit

Я также изучил это и не могу заставить его работать: https://serverfault.com/questions/139728/how-to-download-ssl-certificate-from-a-website

У меня все было хорошо!Мне удалось сделать то, что я считал невозможным, и такая простая вещь, как эта ошибка, на время остановила меня : (

Ответы [ 4 ]

50 голосов
/ 17 августа 2017

В Windows просто наберите winpty, прежде чем ваша команда openssl добьется цели. Так, например, вы можете создать сертификат следующим образом:

winpty openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days XXX

20 голосов
/ 28 февраля 2012

Похоже, что некоторые дистрибутивы OpenSSL для Windows ожидают дополнительного нажатия клавиш, независимо от стандартного ввода. Quit.txt правильно передается в STDIN openssl (сервер получает команду QUIT), но ничего не происходит, пока вы не нажмете любую клавишу.

Эта проблема не существует в Cygwin версии OpenSSL. К сожалению, базовая установка Cygwin занимает около 100 МБ дискового пространства, но вы можете попробовать извлечь только openssl.exe и необходимые библиотеки.

Этот метод работает:

echo QUIT | c:\cygwin\bin\openssl.exe s_client -showcerts -connect google.com:443 > cert.txt
8 голосов
/ 11 февраля 2016

Если вы используете mingw64 в Windows, вы можете использовать программу winpty, чтобы правильно обернуть терминал

Например, создание псевдонима под Bash alias openssl = 'winpty openssl.exe'

Тогда openssl s_client -connect бла

Должен работать как положено

2 голосов
/ 12 ноября 2015

По причинам, которые я не полностью понимаю, в моем случае не сработало отображение QUIT или quit \ n на входе. Я использую MINGW64 с OpenSSL 1.0.2d на Windows 8.1 и использую openssl для получения сертификатов от серверов внутри скрипта bash. Тем не менее, просто запустить команду openssl в фоновом режиме и немного подождать для меня:

#!/bin/bash

openssl s_client -connect my.server.com:443 -showcerts > output.txt 2>/dev/null &
sleep 2
...