假设某个网站返回了无效证书,Firefox 和 Chrome 会向用户发出可怕的警告。我想确保我的本地连接没有受到中间人攻击(在这种情况下,这确实有可能),所以我想通过 SSH 从另一个国家的远程服务器检查证书。如何做到这一点?
我确实尝试过简单地打开有问题的网站,elinks
但elinks
显然它并没有因为证书无效而出现同样可怕的消息。
答案1
gnutls-cli
首先使用或获取证书openssl s_client
。
gnutls-cli "$host" -p "$port" --insecure --print-cert < /dev/null > cert
openssl s_client -connect "$host:$port" -no_ign_eof < /dev/null > cert
然后转储所有证书信息(通常列出至少两个证书,服务器的证书和 CA 的证书):
certtool -i < cert
while openssl x509 -text; do true; done < cert
或者仅仅是最顶层证书的 SHA1 指纹:
certtool -i < cert | grep -A1 fingerprint
openssl x509 -noout -fingerprint -sha1 < cert