该客座博客是系列博客的一部分,由与 F5 合作创建。
CSR、PEM、DER、X509......难怪证书常常被视为某种魔法。
我第一次获得证书时,完全不知道自己在做什么! 我漫无目的地复制了一堆命令并希望它们能够起作用。 但当涉及到安全时,期望某人盲目地复制命令是一件很危险的事情。 没有什么比证书更重要。
证书是 TLS(最常见的是使用 TLS 的 HTTPS)连接的基石。 如果做错了这一点,您将面临连接被攻击者拦截的风险(实际上会抵消 TLS 连接提供的保护)。
本博客是系列文章的一部分,旨在揭示证书的作用,特别是证书管理的作用。 在第一部分中,我们将探讨证书的用途以及它们为何在保护连接(即 TLS 连接)方面发挥重要作用。
当客户端连接到服务器时,我们需要考虑两个安全原则。
第一是保密性。 这很关键,因此传输到客户端和从客户端的数据对于该流量之外的任何人都不可见。 登录页面就是一个很好的例子。 我们希望确保您输入的用户名和密码在您尝试登录的服务器传输时不会被任何人看到。 还值得注意的是,保密性也与隐私有关,可以防止窥探者查看您正在查看的操作或信息。
第二个原则是诚信。 当谈到 TLS 时,很多人都会忘记或不知道这一点。 完整性的意思是,没有人可以篡改往返于客户端的数据。 即使资源是公开的,我们仍然希望确保这些数据的完整性。
考虑一个可公开访问的新闻网站。 由于该页面是公开的,因此我们不太担心保密性方面(除了隐私,但在这个例子中,我们将其放在一边)。 但是,我们要确保从服务器发送到客户端(用户浏览器)的数据没有被操纵。 如果不考虑服务器的完整性,攻击者可能会编辑新闻文章的内容(例如假新闻),或者向页面注入恶意内容,例如浏览器利用框架钩子。
那么,证书在这一切中发挥什么作用呢? 当客户端连接到服务器时,他们需要确保它首先连接到目标服务器。 不是攻击者模仿的服务器。 我们还希望保证连接是端到端加密的。 我们的意思是,连接还没有在某处终止以允许流量检查和修改,并转发到原始服务器。 这被称为中间人攻击。
现在可以明确的是,这种做法有有效的用例,特别是在企业环境中,经常检查互联网流量以帮助提高组织的安全性。 这就是证书发挥作用的地方。 当客户端连接到 TLS 服务器时,服务器必须向客户端提供其(服务器)证书。 然后,客户端将验证该证书,以确保它属于客户端最初尝试连接的正确服务器。 一旦建立了这个(TLS 握手的一部分),客户端和服务器之间的通信就可以开始。
在本系列的下一篇中,我将继续在自己的博客上探讨这个主题。 在那里,我们将介绍验证证书的过程。 在这里,我们将深入探讨证书管理的人性化方面及其重要性。
在此之前,我强烈建议您查看由 David Warburton 和 Nigel Ashworth 主持的丰富 F5 myForum 会议(为不断变化的 SSL 格局做好准备) 。 这是对不断发展的 SSL 和 TLS 领域的绝佳概述,非常值得您花时间阅读。
Sean Wright 是一位经验丰富的应用安全工程师,最初是一名软件开发人员。 他主要关注基于 Web 的应用安全,特别对 TLS 和供应链相关主题感兴趣。 Sean 还在应用安全相关的技术领导方面拥有丰富的经验,并且能够与团队合作来提高他们开发和维护的系统和应用的安全性。 您可以在此处阅读他的博客。