我的计划中的一个障碍是了解需要哪种 SSL 证书。我知道我可以获得多域/通配符 SSL 证书;但是,这仅用于覆盖单个组织的子域。看来我现在和将来都需要为地球上的每个 TLD 获得通配符证书。
我不希望用户通过代理时由于安全检查失败而弹出安全警告;如果可能的话,我还想避免在浏览器中安装手动 CA 信任。但是,如果商业解决方案不可行,那么自签名证书有哪些解决方案可用?
问题:
- 这可能吗?
- 如果无法满足所有限制条件,我能做什么最好的事情?
- 在混合 Windows / Linux 环境中,支持以下浏览器的最低成本成功途径是什么:IE、Firefox、Chrome?
答案1
有两种方法可以实现 MITMing SSL 流量:
- 您将获得一个对所有内容进行通配符处理的可信 SSL 证书(
subjectAltName:*
、subjectAltName:*.*
等等);或者 - 您可以获得受信任的 CA 或中级证书,并“动态”创建受信任的证书以呈现给客户端。
前者更容易做到,但如果您不想让别人知道您在做什么,后者会更好,因为对于普通观察者来说,证书看起来更“合法”。
真正的诀窍是获得这些超级特殊的证书之一。对于合法的组织代理来说,更简单的方法是生成由您自己的 CA 签名的证书,并将该 CA 证书分发到您组织控制范围内的每个设备。这种方法的挑战和局限性应该是相当明显的。
只有足够大的政府和组织才能以更狡猾的方式做事,他们可以颠覆 CA(不管怎样……)——在这种情况下,你会得到一个现有的合法 CA,其 CA 证书已经受到几乎普遍的信任,它会给你上述一个狡猾的证书,然后你就可以高高兴兴地继续走下去了。
后一种方法并非理论——专制政权的政府获得此类证书来破坏其境内的 SSL 连接并监视通过其咽喉点的流量,这样的案例数不胜数。如果这听起来像是 SSL 安全模型完全失效且存在缺陷,那么您的想法是对的。