有没有办法证明 HTTPS 正在加密与我的站点的通信?

信息安全 tls
2021-08-13 15:29:57

我在一家处理 Web 应用程序开发的企业工作,我是“安全专家”。我最近使用Let's Encrypt在一个应用程序中实现了 HTTPS ,我的老板要求我证明 HTTPS 确实加密了信息。

我怎样才能做到这一点?

4个回答

我的老板要求我证明 HTTPS 确实加密了信息。我怎样才能做到这一点?

在基本层面上,您可以使用数据包检查器或简单的端口转发代理。也许 Wireshark 会很容易地检查数据包。

您应该很快就能发现 HTTP 流量是纯文本,而 HTTPS 是二进制乱码。(主机名除外)

但是,这只能证明连接被混淆了。它不能证明加密或安全性。具体来说,它没有表现出对 MiTM 的免疫力。

幸运的是,浏览器为您完成了这一切。如果现代浏览器尝试连接到 HTTPS 网页,它将验证以下内容:

  • 所涉及的证书足够强大的哈希算法。
  • 足够强大的加密算法。(即它实际上是加密的)
  • 由受信任的证书颁发机构颁发的证书链(即在颁发证书之前验证域所有权的 CA)
  • 证书未到期。
  • 匹配哈希值意味着不会有中间人。

虽然您的老板可能希望看到将 HTTP 与 HTTPS 进行比较的 wireshark 胡言乱语,但更强有力的测试是非常简单地使用现代浏览器访问 HTTPS 站点。

确保浏览器未预先配置为忽略警告。(即从多台计算机和智能手机测试)

如果您打算永久继续使用 HTTPS(您应该这样做),明智的预防措施是强制将所有 HTTP 访问重定向到 HTTPS 站点,因为您不能保证所有访问者https://在访问您的站点时都会包含前缀。

这些是证明您的应用程序正在加密信息的几种方法(不全面)

  1. SSL Labs有一个 Web 应用程序来测试您的 Web 应用程序的SSL 实现

或者

  1. 在您的网络浏览器中,使用 HTTPS 保护的网站会在 URL 旁边 显示一个绿色锁,如下所示:一张显示 google.ca 网址旁边的绿色锁形图标的图片

如果您需要更多详细信息,或者更好地证明您的证书在绿色锁之外有效,请单击该锁,显示详细信息,您将看到类似这样的内容(本示例在 Chrome 中):

描述证书的详细信息正在加密您的连接并正常工作

这将为您提供验证证书是否按预期工作所需的所有肮脏的小细节。

或者

  1. 启动Wireshark或您选择的数据包嗅探器/分析器,然后通过您的应用程序运行一些应加密的数据(登录、提交表单等)。找到数据包,跟踪TCP 流,并检查以确保没有以纯文本形式传输。

SSLlabs 是分析 HTTPS 网站的绝佳工具。但....

  • 它并不能证明您已经关闭了网站的非 SSL 部分
  • 我的印象是你的老板不会理解它告诉你的关于你网站的内容
  • 从您对wireshark的评论中,您似乎有点难以理解自己发生了什么

您说您被要求证明“HTTPS 确实加密了信息”。也许有人用词不当,但从表面上看,你说你被要求证明世界依赖于保护电子商务的技术确实实现了其最基本的要求。如果没有,我想现在有人可能已经注意到了。

(我应该指出,在技术上可以将 https 配置为在某些客户端和服务器上使用空密码,但通过设计来做到这一点非常困难。你不能偶然做到这一点)

假设你的老板不是真的那么想,你被要求说服他你所做的工作是有效的。大多数浏览器会向您显示用于访问网站的加密算法。

如果你的老板想要一些不同/更多的东西,那么我们不知道什么能说服他。您需要向他询问更具体的要求和他/她认为可接受的证据的详细信息

与信誉良好的专业IT安全专家和密码学专家签约。允许他们捕获您的网络上的流量,并要求他们尝试找出正在发送到站点和从站点发送的消息。

如果它们失败,您将确定流量已有效加密。当然,这不可能便宜。