使用letencrypt和nginx来部署多个证书

2018-11-15  本文已影响0人  bysir

有一个需求是在letencrypt上申请证书并且部署到nginx.

咋一看很简单, 官方提供的certbot就能实现?

不过真实场景比较复杂, 我们还需要更多实用功能:

  1. 自动申请任何域名的ssl证书并实现多台nginx部署
  2. 自动续签证书并通知nginx reload
  3. 可并发申请证书

官方提供的hook功能有限, 而且编码复杂并不能很好的实现"自动", 所以便自行用Golang实现, 记录下思路

服务器架构

首先区分客户端和服务端, 服务端负责获取证书并通知客户端部署, 客户端负责将证书和nginx文件写入nginx目录并reload.

服务端

要做的事情有

注意的点

客户端

客户端负责控制nginx.

要做的事情有

额外说一下 是如果要跨容器控制nginx, 可以使用这个方案:

总体流程

  1. 服务端通过acme发起申请一个证书, 挑战方式为http01
  2. letencrypt 会请求域名, 请求会被nginx转发到客户端再转发到服务端.
  3. 服务端完成挑战接收到证书, 将证书保存到数据库并通知客户端部署.
  4. 客户端接收到证书之后将证书写入本地目录 并写入对应的nginx配置文件, 再通知nginx重启
上一篇下一篇

猜你喜欢

热点阅读