我不确定我是否了解 TLS 如何正常工作。据我了解,信任某个网站的证书就是信任该网站或不信任该网站,但以下问题表明信任 ONE 证书会使您在网上所做的一切都面临风险。
我无法访问使用 HTTPS 的网站,而是收到“您的连接不是私密的”消息!
我不止一次地信任来自许多网站的自签名证书,因为他们根本买不起证书。这是否意味着我所做的一切都容易受到 MitM 的攻击?
我不确定我是否了解 TLS 如何正常工作。据我了解,信任某个网站的证书就是信任该网站或不信任该网站,但以下问题表明信任 ONE 证书会使您在网上所做的一切都面临风险。
我无法访问使用 HTTPS 的网站,而是收到“您的连接不是私密的”消息!
我不止一次地信任来自许多网站的自签名证书,因为他们根本买不起证书。这是否意味着我所做的一切都容易受到 MitM 的攻击?
信任一个站点的不受信任(自签名或明显无效)证书可能会危及与该特定域的连接,但是您对其他站点仍然是安全的,除非在极少数情况下,其他站点将来自该站点的内容与不受信任的证书。对于自签名证书,唯一的危险是您对证书的初始信任,因为您无法验证您是在与合法服务器交谈还是与 MITM 交谈。一旦您第一次信任该证书,您的浏览器仍会在后续连接中检查该证书是否相同(如果下次出现 MITM,除非您也信任他们自己的证书,否则您不会被拥有)。就密码学而言,证书的类型与将使用哪些密码套件无关,
当您开始信任某人的 CA 证书(通过手动下载证书并导入它)时,噩梦就开始了,在这种情况下,您告诉计算机“让该实体为您遇到的任何网站提供担保”,然后您就可以提供CA 有权告诉您的计算机您访问的任何站点是否受信任,因为任何具有该 CA 签署的证书的站点(出于正当原因或由于 CA 所有者 MITM'ing 您)现在都自动受到您的信任浏览器。
不幸的是,证书一词在相似的上下文中指的是不同的事物。即使在 TLS/SSL 中,它也可能意味着(至少):
您很可能从未使用过客户端证书。这些安装在您的浏览器中,并向特定服务器验证浏览器。几乎所有网站都使用密码来实现此功能。
服务器证书向您的浏览器验证某个服务器 - 它使您的浏览器确保它正在与正确的服务器通信,而不是模拟服务器。每个服务器或域通常使用不同的证书,因此服务器证书仅在那里有效。由于 Internet 上有数以百万计的服务器和域,因此您的浏览器不可能附带所有这些服务器和域的证书。任何人都可以为任何域生成任何(所谓的自签名)证书,需要另一种方式来建立信任。这就是 CA 的用武之地。
CA 充当受信任的第三方:他们拥有广泛的权力来断言所有互联网域的身份(服务器证书)。此权限由浏览器开发人员授予,他们将证书内置在浏览器中
现在我们对 TLS 证书有了更多的了解,我们可以回答您的问题:
以下问题表明,信任 ONE 证书会使您在网上所做的一切都面临风险。
如果它是 CA 证书而不是服务器证书,则这是正确的。安装它们的过程各不相同。由于 CA 能够识别 Internet 上的任何域,因此如果您安装“不良”CA,则所有基于浏览器的通信都可能立即受到威胁。
我不止一次地信任来自许多网站的自签名证书,因为他们根本买不起证书。这是否意味着我所做的一切都容易受到 MitM 的攻击?
不可以。这些是服务器证书,仅对颁发它们的域有效。如果您检查证书详细信息,您可以看到此信息。您的浏览器实际上可能会接受证书对您正在访问的域有效,即使它与证书中列出的域不同,但它不会影响任何其他域。
这些问题所指的是根证书(证书颁发机构)的安装。与访问网站发送的常规证书不同,根证书必须以管理方式安装到客户端计算机的证书存储/保险库中。
常规证书用于确认提供它的网站的真实性。通过自签名,责任在用户一方。
根证书用于确定网站通过证书路径提供的证书的有效性。这就是为什么您不需要单独验证您访问的任何站点的每个证书的原因。
公司所做的是自动安装(例如 MSIE)或要求用户手动安装(例如 Firefox)为他们的代理的根证书。然后:
https://example.com
站点。https://example.com
BlueCoat 根证书签署的域证书签署的。这允许代理捕获整个通信。
通过在他们的机器上安装根证书,用户将不会看到代理发送的证书无效的警告(即浏览器和目标站点之间的通信没有端到端加密)。用户可以检查并查看每个https://
连接的证书都是由 BlueCoat 代理签署的。
上述方法不允许扩展验证,因此使用这些类型证书的站点将在浏览器中显示为常规 https 加密的站点。
证书并没有告诉您该网站是值得信赖的;它告诉您您可能已连接到您认为的网站(他们的私钥可能已被盗)。
自签名证书没有经过第 3 方的任何审查,但即使是 CA 证书也不能为网站对您提供给他们的数据(例如您在其中使用的电子邮件地址、用户名或密码)的处理方式提供任何保护不止一次的地方。
CA 模型存在很大缺陷,因为任何 CA 都可以(但不应该)为任何网站向任何人颁发证书。安装新的根 CA 或中间 CA 会增加风险。DANE 和 Certificate Pinning 试图缓解这种情况。