我想知道处理TLS证书异常的推荐最佳实践和验证逻辑是什么,类似于OpenSSH的known_hosts文件。我知道最好的做法是拥有可以自动验证的证书,但在这里我说的是无法验证证书而用户想要接受它的情况。我想知道以下内容:
1)每个条目中应存储哪些信息 2)如何存储信息以进行安全访问 3)如何进行证书的哈希
AFAIK,known_hosts文件包含以下信息:
<hostname> <certificate hash>
我可以通过这种方法看到的最大问题是当我们使用不同的端口连接到相同的主机名时,这在使用端口转发映射到NAT后面的不同计算机时经常发生。在这种情况下,额外的信息应该以这种方式存储:
<hostname>:<port> <certificate hash>
至于存储信息本身,known_hosts文件通常存储在具有所有者写权限的用户目录中。这被认为是“安全的”吗?我的意思是,任何以当前用户身份运行的进程都可以为用户未明确接受的证书添加新的例外。
至于散列,我认为它应该在整个X.509证书上执行?我只是想检查一下,因为X.509证书中有“TBSCertificate”结构,它排除了签名。我不确定在这里应该做些什么。此外,我想知道当前推荐的用于散列证书的算法以用于异常目的。
提前感谢你对这个问题的建议!