Cmd openssl挂起且不退出

Cmd openssl挂起且不退出,cmd,openssl,quit,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 openssl s_客户端-连接xyz:443cert.txt 其中quit.txt包含“quit\n

我正在尝试使用openssl获取证书,但它似乎一直挂起。我做了很多研究,但并不是所有可用的选项都能在Windows上运行

openssl s_client -showcerts -connect google.com:443 > cert.txt
我试过这个:

openssl s_client -connect xyz:443 < quit.txt > cert.txt
openssl s_客户端-连接xyz:443cert.txt 其中
quit.txt
包含“quit\n” 从

那是行不通的。我还看了

我也尝试过
-prexit

我也研究过这一点,但无法使其发挥作用:


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

看起来一些Windows的OpenSSL发行版需要一个额外的按键,独立于标准输入。Quit.txt被正确地传输到OpenSSL的STDIN中(服务器收到QUIT命令),但在您按下任何键之前不会发生任何操作

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

此方法适用于:

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

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

#!/bin/bash

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

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

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

然后 openssl s_客户端-连接blah


应该在windows上按预期工作,只需在openssl命令执行之前键入
winpty
。例如,您可以创建如下证书:


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

编辑了基本拼写和语法,试图让它看起来像是你在问这个问题上下了功夫。将新版本重新定位到ServerFault,在那里你更容易得到答案。签出--SendKeys(“\n”)在WScript中,我可以让OpenSSL在EOF无法退出的地方退出。谢谢你的MBu。这是我复制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所需的文件列表,不仅在Windows上,而且在Linux上,echo quit通过管道传输到命令中他暂停了输出问题。这解决了我在网络上扫描过期证书时出现的超时问题。我必须添加睡眠以使其更稳定(睡眠2;echo QUIT;)|openssl…或者只是在openssl之前键入winpty。这对我来说很有效。谢谢。非常感谢!!!!我花了太多时间试图弄清楚为什么这么小的命令行在我的Windows上不起作用…!!!在Windows 7上的Git Bash中为我工作!@temporary_user_name确切地说-这个问题是由于使用了。谢谢,最后我能够为openssl中的另一个命令生成.pfx:),我发现它在那里等待我输入密码,但我看不到提示。