获取 smtp.gmail.com 的 SSL 证书指纹

Getting the SSL certificate fingerprint of smtp.gmail.com

我不明白为什么这个命令会失败

openssl s_client -connect smtp.gmail.com:587 -starttls smtp < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -in /dev/stdin | cut -d'=' -f2

我正在尝试与 Gmail 的 smtp 服务器启动 TLS smtp 会话,然后将控制台的输出重定向到 x509 函数以提取指纹。

这是我 运行 命令没有过滤错误时得到的结果

$ openssl s_client -connect smtp.gmail.com:587 -starttls smtp < /dev/null
connect: Bad file number
connect:errno=9

我做错了什么?

我的连接上游有一个防火墙,它似乎阻止了我的查询。 在命令的开头添加 torify(我的电脑上安装了 Tor)解决了这个问题。

user@home:~$ torify openssl s_client -connect smtp.gmail.com:587 -starttls smtp < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout | cut -d'=' -f2 D3:7C:82:FC:D0:5F:8F:D7:DA:A2:59:8C:42:D7:B2:9F:C1:9F:7E:60

以上示例也适用于 :25。

openssl s_client -connect some.smtp.host:25 -starttls smtp < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout | cut -d'=' -f2