如何使用杜松子酒在 golang 中管理证书文件更新?

How to manage certfile renew in golang with gin?

我有一个需要 https 的 mini gin 微服务。但有时,我的证书文件被 certbot 更新了,但我不知道什么时候,我的 gin 微服务仍在使用旧证书。

func Run() {
    fmt.Println("begin")
    r := gin.Default()
    r.Use(cors.Default())
    r.POST("getLieu/", getAdr)
    r.GET("lucky/", Lucky)

    r.RunTLS((":8083"),"/etc/letsencrypt/live/toto.fr/fullchain.pem","/etc/letsencrypt/live/toto.fr/privkey.pem") // listen and serve on 0.0.0.0:8080
}

我如何告诉我的 gin 程序检查证书是否已更改?

您定期重启它。

模拟示例,nginx 位于您的 gin 程序之前:

  • 证书有效期为 3 个月
  • 每个月 certbot renew 个 cronjob 或 systemd 计时器是 运行
  • 每周重启 nginx

您的杜松子酒程序也会发生同样的情况。您每周重新启动 gin 程序 (/service)。

加分:graceful shutdown