跳转到正文
IsSafeSite
3 分钟阅读IsSafeSite Team

让网站面临风险的 SSL/TLS 配置错误

一把有效的小锁并不代表你的 TLS 是健康的。本文讲解那些悄悄削弱 HTTPS 的证书与协议配置错误,以及如何发现它们。

TLS证书HTTPS

对多数访问者来说,HTTPS 是非黑即白的——小锁要么在,要么不在。但对攻击者而言,TLS 是一道光谱。一张证书可以有效且受信任,而其背后的配置仍可能允许降级攻击、在子域之间泄露,或在下个月到期时悄然失效。本文讲的是扫描在“是不是 HTTPS”之外还会检查什么。

即将过期的证书

过期是最常见、也最可避免的 TLS 事故。随着证书有效期不断缩短,手动续期已不再现实。请自动化签发与续期(ACME/Let's Encrypt,或你平台的托管证书),并在到期前就提前告警,而不是到期当天才报警。扫描会给出剩余天数,让短期证书不至于突然“翻车”。

不完整的证书链

只发送叶子证书、却漏掉中间证书的服务器在你的浏览器里能正常工作——因为你的浏览器已缓存了中间证书——却会对别人失败。这正是经典的“在我这儿是好的”式 TLS 问题。请始终提供完整的证书链:

openssl s_client -connect example.com:443 -servername example.com -showcerts

如果输出里只有一张证书,说明你的证书链不完整。

仍然启用的弱协议与弱加密套件

TLS 1.0 和 1.1 已被弃用,应予禁用;出口级(export)和 RC4 加密套件同样如此。现代建议:

  • 只支持 TLS 1.2 和 TLS 1.3。
  • 优先使用具备前向保密的套件(ECDHE)。
  • 禁用 RC4、3DES 以及任何标注为 EXPORT 的套件。
  • 开启 OCSP stapling,加快吊销状态检查。

HTTPS 页面上的混合内容

一个 HTTPS 页面若通过 http:// 加载脚本、样式表或图片,就给了攻击者在本应安全的页面上的落脚点——而且浏览器无论如何都会拦截其中的主动内容,破坏你的界面。找出并修复每一处绝对的 http:// 引用,或让浏览器自动升级它们:

Content-Security-Policy: upgrade-insecure-requests

没有 HTTP 到 HTTPS 的跳转

如果 http://yoursite.com 直接返回内容而不是跳转,那么每一次首访都是明文请求。用 301/308 把所有 HTTP 跳转到 HTTPS,再用 HSTS 强制,让浏览器以后不再尝试 HTTP(参见安全响应头指南中的第 1 个错误)。

被滥用到过广的通配符证书

把一张 *.example.com 证书用在互不相关的多个服务上,意味着一把被盗的私钥会同时危及所有这些服务。方便,但也放大了影响面。请把证书的作用范围限定在真正需要共享它的服务上。

要持续检查,而不是只查一次

TLS 配置会漂移:新增一个子域、更换一次负载均衡、忘记一次续期。把 TLS 检查纳入你检查响应头的同一节奏——如何读懂网站安全扫描报告讲了如何把这些结果变成每周计划,价格页则列出了保持定期扫描所需的次数上限。

把这些检查变成你自己网站的扫描报告。

运行一次免费扫描,约 30 秒即可获得有优先级、可落实的结果。

扫描我的网站

继续阅读