如何捕获OpenSSL s_client命令的完整输出到文本文件?
解决OpenSSL s_client命令完整输出捕获问题
那些丢失的depth、verify error这类证书验证信息,其实是输出到**标准错误流(stderr)**里的,而普通重定向命令只捕获了标准输出流(stdout),所以这部分内容没被写入文件。要完整捕获所有输出,需要把stderr和stdout合并后再写入文件,具体命令分两种环境:
Windows命令提示符(CMD):
使用这条命令合并两个流并输出到文件:openssl.exe s_client -connect google.com:443 > output.txt 2>&1其中
2>&1的作用是把stderr(文件描述符为2)的内容重定向到stdout(文件描述符为1)的输出流中,这样所有内容都会写入output.txt。Windows PowerShell:
可以用更简洁的方式捕获所有输出流:openssl.exe s_client -connect google.com:443 *>&1 | Out-File output.txt也兼容CMD的写法
openssl.exe s_client -connect google.com:443 > output.txt 2>&1,效果一致。
如果需要把标准输出和错误输出分开保存到不同文件,以CMD为例可以用:
openssl.exe s_client -connect google.com:443 > stdout.txt 2> stderr.txt
这样stdout.txt存CONNECTED及证书链内容,stderr.txt存证书验证相关的信息。
内容的提问来源于stack exchange,提问作者Pratyush
相关产品推荐
相关产品推荐

