我生成 TLS 证书并使用自签名 CA 对其进行签名。
在此过程中可能会发生许多小错误,并导致证书被拒绝。浏览器似乎会提供非常不透明的错误,这些错误会给出一些通用的 TLS 错误代码(或更糟糕的是,只是“此站点受到攻击!”),但没有解释证书链到底出了什么问题。
此外,TLS 随着时间的推移而不断发展,TLS 软件支持的许多功能在几年前很常见,现在被认为是不安全的并且不再使用。很难跟踪这些。
在 Unix/Linux 环境中,有没有办法测试 TLS 证书,以快速确定它是否总体上符合现代标准,如果不符合,看看问题到底出在哪里?
答案1
zlint
并且cablint
似乎是检查证书与 CA/浏览器论坛基线要求一致性的流行工具。 (我个人没有使用过它们。)
请记住,内部管理的 CA 是不属于主题与 WebPKI CA 的要求相同 - 浏览器知道差异并且不强制执行例如 SAN 要求(至少据我所知)。
在验证之前我不会开始使用各种特定于浏览器的策略底层 TLS 库接受证书。也就是说,给定一个已配置的 TLS 服务器,我首先尝试gnutls-cli <host>:<port>
查看 GnuTLS 关于它和整个链的说明;然后与 相同openssl s_client
(需要-servername
和选项)。-verify_hostname …