【发布时间】:2012-05-21 15:57:39
【问题描述】:
我正在尝试在 Windows 上获取远程服务器的 ssl 证书。我发现的一种选择是使用 openssl。如internet 上的一些帖子所示,执行此操作的命令是:
openssl.exe s_client -showcerts -connect {REMOTE_SERVER_IP}:{REMOTE_SERVER_PORT}
这很好用,但我的问题是上面的命令有 300 秒的超时。证书本身打印得非常快,当我在前几秒内得到我想要的一切时,我认为没有理由等待 300 秒。我仍然认为没有办法更改 s_client 上的超时参数。所以我试图想办法在给定的一段时间后杀死windows上的一个进程,但又没有运气。关于如何做到这一点的任何想法?如果有其他 Windows 方法可以获取远程服务器 ssl 证书并将其存储在文件中,这也可以完成。
编辑:根据布鲁诺的要求添加更多信息。 我正在尝试创建一个获取远程服务器的 SSL 证书并将其存储在文件中以供进一步处理的 c++ 应用程序。由于我的应用程序已经使用了 openssl.exe,我要么需要一个使用 openssl.exe 的解决方案,要么需要一个标准的 windows 命令(即不需要任何额外的库)。
EDIT2:我找到了一种避免在 linux 中等待的方法 - 只需创建一个空文件并将 openssl s_client 的输入重定向到它(或使用管道传递空输入)。这也适用于 Windows,但适用于旧版本的 openssl(0.9.8l)。我用 0.9.8r 和 1.0.1b 尝试过,将输入重定向到一个空文件并没有帮助。
【问题讨论】:
-
你试过按Ctrl+C还是Ctrl+D?
-
命令从程序启动。如果我从命令行运行它 ctrl+c 就可以了,但这不是我需要的。
-
到目前为止,这看起来像是一个超级用户问题(因此投票结束)。如果您确实从程序中运行它,请告诉我们如何(以及使用哪种语言)。
-
我添加了更多信息,希望现在更清楚。
-
openssl 也是一个库。一种解决方案是从 C++ 对 libssl 进行 C 调用,以获取证书。您可以使用 s_client 作为示例实现。
标签: c++ windows ssl openssl ssl-certificate