如何以非交互方式(从脚本)验证与 openssl 的 ssl / tls 连接?

如何以非交互方式(从脚本)验证与 openssl 的 ssl / tls 连接?

当我执行时:

openssl s_client -connect google.com:443
openssl s_client -connect government.ru:443

这给了我有价值的输出,但我想openssl关闭连接并退出返回一个整数退出代码(不同),以便我可以做这样的事情

echo "Domain?";read d
openssl s_client -connect "$d":443

if [[ "$?" -eq 0 ]]; then
  echo "Encrypted"; do_something
else 
  echo "Plain."; do_something_else
fi

答案1

s_client识别Q命令。openssl 文档:

Q:  End the current SSL connection and exit.
printf "Q" | openssl s_client -connect google.com:443

或者:

echo | openssl s_client -connect google.com:443

或者:

openssl s_client -connect google.com:443 <<< "Q"

答案2

如果运行openssl s_client -connect google.com:443并且 TLS 连接成功,该命令将等待标准输入上的数据,以便通过连接发送。

如果您运行openssl s_client -connect google.com:443 </dev/null并且连接成功,它将立即关闭,您将获得您正在寻找的行为。

相关内容