Domanda openssl si blocca e non esce


Sto cercando di usare openssl per ottenere un certificato, e sembra che continui a pendere. Ho fatto molte ricerche ma non tutte le opzioni disponibili sembrano funzionare su Windows.

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 "esci \ n" a partire dal http://bytes.com/topic/php/answers/8802-automate-openssl-s_client-command-batch-php-script

Non ha funzionato. Ho anche guardato Openssl s_clinet -connect scripting. Forza smettere di aiutare

Ho anche provato -prexit

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

Stavo andando così bene! Sono riuscito a fare qualcosa che pensavo sarebbe impossibile e una cosa semplice come questo bug è riuscito a fermarmi per ora :(


19
2018-02-26 02:55


origine


risposte:


Sembra che alcune distribuzioni OpenSSL per Windows si aspettino un keypress aggiuntivo, indipendente dallo standard input. Quit.txt viene inserito correttamente in STDIN di openssl (il server riceve il comando QUIT), ma non accade nulla finché non si preme alcun tasto.

Questo problema non esiste in Cygwin di versione di OpenSSL. L'installazione infausta di Cygwin richiede 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

17
2018-02-27 20:27



Su Windows, semplicemente digitando winpty prima che il comando openssl esegua il trucco. Ad esempio, potresti creare un certificato in questo modo:

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


8
2017-08-17 10:38



Se stai usando mingw64 su Windows puoi usare il programma winpty per avvolgere correttamente il terminale

Ad esempio creando alias sotto bash alias openssl = 'winpty openssl.exe'

Poi openssl s_client -connect blah

Dovrebbe funzionare come previsto


7
2018-02-11 14:43



Per ragioni che non capisco completamente, echo QUIT o esci \ n nell'input 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, è sufficiente eseguire il comando openssl in background e aspettare un po 'ha funzionato per me:

#!/bin/bash

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

1
2017-11-12 09:16