我正在尝试制作一个 bash 脚本,该脚本将检查我的网站客户端的 SSL 状态并返回错误。但对于每个 IP,wget https://$ip:$port
都会出现以下错误:
ERROR: The certificate of 1.2.3.4 is not trusted
ERROR: The certificate of 1.2.3.4 hasn't got a know issuer
当我尝试使用 Firefox 时,我拥有每个 IP 的证书。所以我尝试将 Firefox CA 转储到如下存储库:
wget http://$ip:$port --ca-directory=(directory of CA from Firefox)
但这并没有改变任何事情。
我想,wget
没有找到 SSL 证书,而且我不知道如何获取它们。
如何获取证书信息?
答案1
通常,SSL 证书颁发给主机名(例如www.example.com
,而不是 IP 地址)。
因此,当您使用 IP 地址时,您访问的 URL 与颁发证书的主机名之间会不匹配。
其次,Firefox 中的 CA 目录可能不适合,因为根据 wget 手册页要求:
--ca-directory=目录指定包含 PEM 格式的 CA 证书的目录。每个文件包含一个 CA 证书,文件名基于从证书派生的哈希值。 ...
我认为 wget 使用 openssl 库,可能使其成为一个更详细的实用程序来检查证书状态,例如在查询中确定 SSL 证书的到期日期:
echo "GET /" | openssl s_client -connect servername:port | openssl x509 -noout -dates