openssl挂起并且不退出

时间:2012-02-26 02:55:16

标签: cmd openssl quit

我正在尝试使用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 scripting. Force quit help

我也试过-prexit

我也研究了这个并且无法使其正常工作: https://serverfault.com/questions/139728/how-to-download-ssl-certificate-from-a-website

我做得很好!我设法做了一些我认为不可能完成的事情,像这个错误这样的错误设法阻止了我暂时 :(

4 个答案:

答案 0 :(得分:41)

在Windows上,只需在openssl命令之前输入winpty即可。因此,例如,您可以创建如下证书:

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

答案 1 :(得分:19)

看起来Windows的一些OpenSSL发行版期望额外的按键,独立于标准输入。 Quit.txt被正确地传送到openssl的STDIN(服务器接收QUIT命令),但是在按任意键之前没有任何反应。

Cygwin's版本的OpenSSL中不存在此问题。不幸的是,Cygwin的基本安装需要大约100 MB的磁盘空间,但您可以尝试仅提取openssl.exe和所需的库。

此方法有效:

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

答案 2 :(得分:8)

如果在Windows上的mingw64下运行,您可以使用winpty程序正确包装终端

例如在bash下创建别名 别名openssl ='winpty openssl.exe'

然后 openssl s_client -connect blah

应该按预期工作

答案 3 :(得分:2)

由于我没有完全理解的原因,在输入中回显QUIT或退出\ n在我的情况下不起作用。我在Windows 8.1上使用MINGW64和OpenSSL 1.0.2d,我正在使用openssl从bash脚本中的服务器获取证书。但是,只需在后台运行openssl命令并等待一段时间对我有用:

uglify(compress: { unused: true, dead_code: true });