2012-02-26 14 views
15

Sto provando ad usare openssl per ottenere un certificato, e sembra continuare a rimanere sospeso. Ho fatto molte ricerche ma non tutte le opzioni disponibili sembrano funzionare su Windows.openssl si blocca e non esce

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

Ho provato questo:

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

Dove quit.txt contiene "quit \ n" da http://bytes.com/topic/php/answers/8802-automate-openssl-s_client-command-batch-php-script

che non ha funzionato. Ho anche guardato Openssl s_clinet -connect scripting. Force quit help

Ho anche provato -prexit

Ho anche guardato in questo come bene e non riesco a farlo funzionare: https://serverfault.com/questions/139728/how-to-download-ssl-certificate-from-a-website

stavo facendo così bene! Sono riuscito a fare una cosa che ho pensato che sarebbe stato impossibile e una cosa semplice come questo bug riuscito a fermarmi per il momento :(

+1

A cura di ortografia e la grammatica di base, cercando di far sembrare che si mette un po 'di sforzo in porre la domanda. Spostare la nuova versione su ServerFault, dove è più probabile che si ottenga una risposta. –

+0

Controlla http: // StackOverflow.it/questions/16823068/gnuwin32-openssl-s-client-conn-to-websphere-mq-server-non-closing-at-eof-hang - SendKeys ("\ n") in WScript può far chiudere OpenSSL dove EOF non può. – clacke

risposta

16

Sembra che alcune distribuzioni di OpenSSL per Windows si aspettano un ulteriore pressione di un tasto, indipendente di standard di input. Quit.txt viene correttamente convogliata in STDIN di OpenSSL (il server riceve comando QUIT), ma non succede nulla fino a quando si preme un tasto.

Questo problema non esiste in Cygwin's versione di OpenSSL. installazione di base Purtroppo di Cygwin prende circa 100 MB di spazio su disco, ma puoi provare ad estrarre solo openssl.exe e le librerie richieste.

Questo metodo funziona:

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

grazie per questo MBu. ha funzionato questo è l'elenco dei file avevo bisogno di copiare cygcrypto-0.9.8.dll cyggcc_s-1.dll cygssl-0.9.8.dll cygwin1.dll cygz.dll find-serial.bat libeay32.dll openssl.exe ssleay32.dll – Adiboy

+1

Non solo su Windows ma anche su Linux l'eco QUIT collegato al comando risolve il problema dell'uscita di stallo. –

1

Per ragioni non mi completeley capire, facendo eco chiudere o uscire \ n all'ingresso non ha funzionato nel mio caso. Sto usando MINGW64 con OpenSSL 1.0.2d su Windows 8.1 e sto usando openssl per ottenere i certificati dai server all'interno di uno script bash. Tuttavia, proprio l'esecuzione del comando openssl in background e in attesa un po 'ha funzionato per me:

#!/bin/bash 

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

Se in esecuzione sotto mingw64 su Windows è possibile utilizzare il programma winpty per avvolgere correttamente il terminale

esempio la creazione di alias in bash alias openssl = 'winpty openssl.exe'

Poi OpenSSL s_client -connect bla

dovrebbe funzionare come previsto

+7

O semplicemente digitando winpty prima di openssl. Questo è quello che ha funzionato per me. Grazie. – smoore4

4

Su Windows, è sufficiente digitare winpty prima che il comando openssl esegua il trucco. Così, per esempio, è possibile creare un certificato in questo modo:

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