2012-02-26 9 views
15

Estoy tratando de usar openssl para obtener un certificado, y parece seguir colgando. He investigado mucho, pero no todas las opciones disponibles parecen funcionar en Windows.openssl se cuelga y no sale

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

He intentado esto:

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

Dónde quit.txt contiene "Salir \ n" de http://bytes.com/topic/php/answers/8802-automate-openssl-s_client-command-batch-php-script

que no funcionó. También miré Openssl s_clinet -connect scripting. Force quit help

También he intentado -prexit

También he mirado en esto también y no puedo conseguir que funcione: https://serverfault.com/questions/139728/how-to-download-ssl-certificate-from-a-website

que estaba haciendo tan bien! Me las arreglé para hacer algo que pensé que sería imposible y algo tan sencillo como este error que yo deje de por el momento :(

+1

Editado ortografía y la gramática básica, tratando de hacer que parezca que hacer un esfuerzo para hacer la pregunta. Reubique la nueva versión en ServerFault, donde es más probable que obtenga una respuesta. –

+0

Consulte http: // stackoverflow.com/questions/16823068/gnuwin32-openssl-s-client-conn-to-websphere-mq-server-not-closing-at-eof-cuelga - SendKeys ("\ n") en WScript puede hacer que OpenSSL se cierre EOF no puede. – clacke

Respuesta

16

Parece que algunas distribuciones de OpenSSL para Windows esperan una pulsación de tecla adicional, independiente de estándar de entrada. Quit.txt se canaliza correctamente en STDIN de OpenSSL (el servidor recibe comando QUIT), pero no pasa nada hasta que se pulsa cualquier tecla.

Este problema no existe en Cygwin's versión de OpenSSL. Desafortunadamente instalación de la base de toma de Cygwin aproximadamente 100 MB de espacio en disco, pero puede intentar extraer solo openssl.exe y las bibliotecas necesarias.

Este método funciona:

echo QUIT | c:\cygwin\bin\openssl.exe s_client -showcerts -connect google.com:443 > cert.txt 
+1

gracias por eso MBu. funcionó esta es la lista de los archivos que necesitaba para copiar cygcrypto-0.9.8.dll cyggcc_s-1.dll cygssl-0.9.8.dll cygwin1.dll cygz.dll hallazgo-serial.bat libeay32.dll openssl.exe ssleay32.dll – Adiboy

+1

No solo en Windows, sino también en Linux, el echo QUIT introducido en el comando resuelve el problema de salida de bloqueo. –

1

por razones que no se entienden completeley, haciéndose eco de dejar de fumar o dejar de fumar \ n en la entrada no funcionó en mi caso. Estoy usando MINGW64 con OpenSSL 1.0.2d en Windows 8.1, y estoy usando openssl para obtener certificados de servidores dentro de un script bash. Sin embargo, sólo se ejecuta el comando openssl en segundo plano y esperar un poco trabajó para mí:

#!/bin/bash 

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

Si se ejecuta bajo mingw64 En Windows, puede utilizar el programa winpty para envolver correctamente el terminal de

Ej alias de crear bajo bash openssl alias = 'winpty openssl.exe'

Entonces openssl s_client -connect bla

En caso de trabajar como se esperaba

+7

O simplemente escribiendo winpty antes de openssl. Eso es lo que funciono para mi. Gracias. – smoore4

4

En windows, simplemente escribiendo winpty antes de su comando openssl hará el truco. Así, por ejemplo, se podría crear un certificado de este modo:

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

Cuestiones relacionadas