(评论者:我也知道这是在超级用户领域,但如果前一个问题悄悄通过... :))
这与this question非常相似,但在Windows(7/8 / Server 2008/2012)环境中:我使用的是OpenSSL的Windows端口。
我正在运行
openssl s_client -connect 192.168.0.1:443
从命令提示符,以显示证书信息。但是,openssl之后会等待用户输入;我可以 Ctrl + C 来“打破”输出,或者每次只输入几个字符然后点击返回,但我需要自动化这个 - 所有我真的很感兴趣in是证书信息。
根据上一个问题,我需要一些方法来终止/关闭连接。但是,我尝试在输入文件中输入echo
/ type
输入到混合中,似乎没有任何东西可以模拟真实用户。任何人都可以告诉我如何在连接后强制openssl退出吗?
答案 0 :(得分:30)
使用管道传入字符“Q”可以达到预期的效果。这为脚本提供了很好的单行程序:
echo "Q" | openssl s_client -connect host:port
如果您使用的是新版本的BASH,您还可以使用三重小于重定向而不是管道(有时管道不可用,因为它在stdin / stdout上运行):
openssl s_client -connect host:port <<< "Q"
答案 1 :(得分:4)
在空白行的开头输入字母“Q”将结束活动连接。我已经看到s_client进入没有做任何事情的状态,但这是退出会话的记录方式。
如果您想在批处理模式下执行此操作,只需创建一个文本文件,其中包含字母“Q”,后跟回车符,并将其指向命令的末尾,如下所示:
openssl s_client -connect host:port < Q.txt
我试过这个并且有效。
答案 2 :(得分:1)
我的 $profile
中有一个关注者,如果我需要扩展输出,只需使用 cert github.com
或 cert github.com 15
调用它。一直工作到现在。
# $profile
function test-certificate($domain, $contextLength = 10) {
$domain += ":443"
echo "q" | openssl s_client -connect $domain | openssl x509 -noout -enddate | sls "notAfter.*"
echo "q" | openssl s_client -connect $domain | sls "certificate chain" -Context $contextLength
write-host "~~~" -ForegroundColor darkcyan
write-host "If needed, pass a desired output length after domainname" -ForegroundColor darkcyan
}
Set-Alias cert test-certificate
编辑:要解析 unable to get local issuer certificate
,请从 https://curl.se/docs/caextract.html 下载证书包。我不以编程方式进行,所以我最终得到了
function test-certificate($domain, $contextLength = 10) {
$cacertPath = "c:\Users\Admin\tools\cacert.pem" #←EDIT THIS
$domain += ":443"
echo "q" | openssl s_client -connect $domain -CAfile $cacertPath | openssl x509 -noout -enddate | sls "notAfter.*"
echo "q" | openssl s_client -connect $domain -CAfile $cacertPath | sls "certificate chain" -Context $contextLength
Write-Host "~~~" -ForegroundColor darkcyan
Write-Host "→ If needed, pass a desired output length after domainname" -ForegroundColor darkcyan
Write-Host "→ To update the list of trusted Certificates, run:" -ForegroundColor darkcyan
Write-Host "→ Invoke-WebRequest https://curl.se/ca/cacert.pem -OutFile 'c:\Users\Admin\tools\cacert.pem'" -ForegroundColor darkcyan
Write-Host "~~~" -ForegroundColor darkcyan
}