Netflix 发布证书管理框架 Lemur

  • 张天雷

2015 年 10 月 12 日

话题:语言 & 开发架构

作为一家视频租赁供应商,Netflix近些年开始越来越多的通过网络来来为用户提供电影和电视节目。如何保证这些基于不同硬件和软件的设备在传输用户信息、视频信息时的安全是一个极大的挑战。为此,Netflix 在 HTTPS 和 NTBA 这两种安全机制的基础上,近期又提出了消息安全层的概念。然而,如何管理复杂加密协议中的证书又成为了困扰很多用户的问题。近日,Netflix 宣布推出了开源的 x.509 证书管理框架——Lemur,来为证书生成、部署和管理提供便利。

提到加密通信,公钥基础设施(PKI,public key infrastructure)是不可避免的概念。PKI 的核心组件包括发行和验证数字证书的证书授权中心(Certificate Authority,CA)、公钥证书(Public Key Certificate)和私钥(Private Key)。其通过使用从 CA 获得和共享的公钥和私钥来实现数据的安全交换。Neflix 的工程师 Kevin 等给出了一个使用 HTTPS 协议的情况下获得和部署证书的例子。通常情况下,该过程包含以下 5 个步骤。

  1. 生成证书注册请求(Certificate Signing Request,CSR)。作为一个加密的请求,CSR 包含了省份、地点、组织名称等请求机构的信息以及请求的原因。通常情况下,开发人员需要使用 OpenSSL 命令来生成 CSR。然而,OpenSSL 命令包含了大量的可选择项。一旦使用错失误,生成的私钥就会存在风险。
  2. 提交 CSR。开发人员需要把 CSR 提交到 CA,来获得证书。然而,这一步也经常会出现问题。很多大的机构都存在内部 CA 和外部 CA。二者分别负责内部通信和外部通信的信息加密和安全。尤其是外部 CA,肩负着面向互联网通信的安全重任。但是,二者责任划分并不是那么明确,使得开发人员很多时候并不清楚应该把 CSR 提交到哪个 CA。
  3. 批准 CSR。作为关键性的一步,安全工程师会人工仔细审查 CSR 的信息,确保信息正确、有效。
  4. 部署证书。获得证书后,工程师需要将其部署到相应的服务器中。一般情况下,工程师会反复确认证书和密钥配置正确,并放置在安全的位置,以确保通信的安全。
  5. 存储私密信息。该步骤可选,但对于私密信息的恢复十分重要。存储的同时,工程师就需要考虑密钥是否需要重新部署等。

Lemur 包含了几个核心的概念:颁发者、目的点、源点和通知。其中,颁发者指内部或第三方的 CA、目的点指证书部署的目标、源点指任意的证书仓库、通知指订阅者感知证书变化的方式。

在使用 Lemur 时,开发人员管理和部署证书的步骤简化为只有一步——发出网页请求。Lemur 会根据请求自动联系 CA 来获得证书,并自动部署。最后,在证书发生变化时,Lemur 自动向安全工程师发送通知。Lemur 提供了非常友好的图形界面,来为输入提供建议和自动校验。Lemur 的目的点插件使得开发人员可以自己挑选上传证书的环境。而其源点插件使得 Lemur 能够管理不同的环境和已经存在的大量证书。最后,Lemur 特别对流程中的私密材料进行了安全的存储。

目前,Lemur 项目已经放置在GitHub中。用户也可以通过 Docker 来尝试 Lemur。详细的安装和配置指令也在网站中进行了说明。Kevin 等也指出,当前的 Lemur 还不能应对所有的情况。对于第三方维护的销售网站或者支付平台,用于保护其服务中通信安全的证书就不能通过 Lemur 来生成。Netflix 也希望广大用户能够提出更多的建议或者开发出更多的插件来进一步改善 Lemur。


感谢魏星对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

语言 & 开发架构