70

我正在尝试使用 openssl 获取证书,它似乎一直挂起。我做了很多研究,但并非所有可用选项似乎都适用于 Windows。

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

我试过这个:

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

其中包含来自http://bytes.com/topic/php/answers/8802-automate-openssl-s_client-command-batch-php-scriptquit.txt的“quit\n”

那没有用。我还查看了Openssl s_clinet -connect 脚本。强制退出帮助

我也试过 -prexit

我也对此进行了研究,但无法正常工作: https ://serverfault.com/questions/139728/how-to-download-ssl-certificate-from-a-website

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

4

4 回答 4

153

在 Windows 上,只需winpty在您的 openssl 命令之前键入即可。因此,例如,您可以像这样创建证书:

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

于 2017-08-17T10:38:44.593 回答
27

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

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

此方法有效:

echo QUIT | c:\cygwin\bin\openssl.exe s_client -showcerts -connect google.com:443 > cert.txt
于 2012-02-27T20:27:22.387 回答
10

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

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

然后 openssl s_client -connect blah

应该按预期工作

于 2016-02-11T14:43:04.817 回答
3

由于我不完全理解的原因,在我的情况下,将 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
于 2015-11-12T09:16:44.853 回答