I'm starting to provide Chinese / English versions of some posts, switch with the Language menu above. 我开始提供部分文章的中文、英文翻译,请使用顶部语言菜单切换。

nginx:TLS 1.3 多版本草案和 HPACK

距离我之前给 nginx 启用 TLS 1.3 已经过了 11 个月了。快一年过后,许多与 nginx 相关的程序、补丁都有了很大的变化:OpenSSL 已经在发布 1.1.1 的测试版,写本文时最新版本是 1.1.1-pre8(也就是 Beta 6)。nginx 已经更新到 1.15.1。nginx 的 HPACK 补丁(HTTP 头压缩补丁)的 bug 已经有另外的补丁的补丁修复,使用原先的 HPACK 补丁会导致网站访问不正常,体现为每个网站只能打开一个页面,第二个页面开始就出现协议错误。有大佬发布了 OpenSSL 的补丁,可以让最新版 OpenSSL 同时支持 TLS 1.3 的 draft 23,26,28 三个版本。Lets Encrypt 证书已经自带 Certificate Transparency 信息了,不需要 nginx-ct 了。2018 年 7 月 1 日起,TLS 1.0 不再被建议使用。因此我重新调整了 nginx 的编译和运行配置,以适应 8102 年的需要。Dockerfile ¶我依然使用 Docker 部署 nginx。与之前的 Dockerfile 相比,新的 Dockerfile 只是改了下版本号,添加了几个补丁,...
插图

为 nginx 启用 TLS 1.3,并传递给 FastCGI 后端

OpenSSL 在最新的测试版中提供了 TLS 1.3 的实验性支持,包括了一系列的性能和安全性优化。最新的 nginx 1.13 系列也相应的添加了 TLS 1.3 的相关选项。不过由于 TLS 1.3 还处在草案状态,现在使用还是要踩一些坑的:TLS 1.3 目前有 18、19、20 三个版本的草案已经被 OpenSSL 等实现,而且它们互不兼容,也没有一个 SSL 的库把它们三合一。目前 Chrome、Firefox 等浏览器广泛使用的是 18 版草案,但是这个版本的 OpenSSL 不支持 TLS 扩展,而 Certificate Transparency 需要用到它。虽然最新的 nginx-ct 插件增加了 TLS 1.3 的 Certificate Transparency 支持,但是由于第二条,它无法与草案 18 的 OpenSSL 一同工作,会出现编译失败的情况。因此必须退回到 nginx-ct 项目 release 中的 1.3.2 版本,而这个版本对 TLS 1.3 不生效。我部署 nginx 使用的 Dockerfile 如下: ¶FROM debian:jessie-slimMAINTAINER Lan Tian "lantian@lantian....

OpenSSL “心血” 漏洞 造成巨大影响

2014 年 4 月 8 日,微软正式停止对 Windows XP 提供支持服务。2014 年 4 月 8 日,著名开源 SSL 支持软件 OpenSSL 爆出 “心血” 漏洞,该漏洞面前几乎现在的一切 IDS 系统和防火墙都无法防御。SSL,全称 Secure Socket Layer,是一种互联网上广泛使用的加密协议,它可以防止数据在用户和服务器传输时被窃听。OpenSSL 是一款开放源代码的 SSL 支持软件,通过调用它,所有软件都可以轻松实现 SSL 加密连接,不需要自己再研究一遍 SSL 了。HTTPS 协议就利用 SSL 保护用户数据,大型网站在用户登录时会将用户导向 HTTPS 页面,以便保护用户数据。但是 OpenSSL 爆出的 “心血” 漏洞,则对所有这些软件造成了巨大的影响。这个漏洞会导致什么呢?随机读取内存,一次 64KB。一次 64KB,而这个攻击可以被一直重复而不会被防火墙发现,因此黑客可以不断遍历整台服务器的内存,从内存中拿到一些重要的数据,比如用户密码,cookie,和网站程序源代码。利用这些信息,...