使用 openssl 检查 TLSv1.3 支持

Checking TLSv1.3 support using openssl

我正在使用 openssl 检查域列表中是否支持 tlsv1.3。我已经编写了脚本,但脚本并没有停止等待我按 CTRL+D 而不是它给我一个结果。 这是剧本

!/usr/bin/env bash

filename='domains.txt'
while read line;do
domain=$line

if openssl s_client -connect $domain:443 -tls1_3 2>/dev/null | grep -q 'Protocol  : TLSv1.3'; then
  echo "tls V 1.3 being used "
else
 echo "tls v 1.3 not begin used"
fi
done <$filename

我也像这样将 echo 与 openssl 一起使用

echo "x" | openssl s_client -connect www.example.com:443 -tls1_3 2>/dev/null | grep  'Protocol  : TLSv1.3'

注意: 当我 运行 终端上的单个站点命令时,我无需键入 CRTL+D 即可获得结果,但是当我在脚本中使用循环和 if 语句使用它时,它会等待我按 CTRL+D。真是奇怪。

我也试过 echo "q" | openssl 命令

喜欢:

echo Q | timeout 1 openssl s_client -connect www.example.com:443 -tls1_3 2>/dev/null

通过Q会快速退出,无法连接时timeout会退出

谢谢这对我有用。实际上,当我使用 grep 时,它给了我一个错误的结果,而没有 grep 它工作得很好。

#!/usr/bin/env bash
for i in `cat domain.txt`; do 
echo $i
if echo Q | timeout 3 openssl s_client -connect $i:443 -tls1_3 2>/dev/null; then
  echo "$i" "tlsv1.3 enabled" >>output.txt
else
echo "$i" "tlsv1.3 disabled" >>output.txt
fi
done