小编jam*_*ami的帖子

acme autocert manager在启动时忽略有效证书

我正在构建一个使用acme/autocert的服务.要使用具有多个副本的服务,我必须编写像DirCache这样的持久缓存接口.然后我注意到,重新启动服务后,启动时忽略了缓存中的所有有效证书.以下序列始终发生:

  • 缓存放acme_account +密钥(即使它存在于缓存中)
  • 缓存获取acme_account +密钥
  • 缓存获取my.domain.net(它返回缓存的证书)
  • 缓存获取acme_account +密钥
  • 缓存放了my.domain.net +令牌
  • 缓存放HASH + http-01
  • 缓存删除HASH + http-01
  • 缓存删除my.domain.net +令牌
  • 缓存放my.domain.net(放新证书)

这是正确的行为吗?因为每个副本都会创建自己的证书,并且在这种情况下不可能使用持久性缓存

这是我的经理工厂

func NewManager(d *db.DynamoDB, staging bool) *Manager {
    manager := &Manager{
        CertCache: NewPersistentCertCache(d),
    }

    directoryURL := acme.LetsEncryptURL
    if staging {
        directoryURL = LetsEncryptStagingURL
        log.Infof("Using CA staging environment")
    }
    log.Infof("CA URI %s", directoryURL)

    client := &acme.Client{
        DirectoryURL: directoryURL,
    }

    manager.AcmeManager = &autocert.Manager{
        Prompt:     autocert.AcceptTOS,
        HostPolicy: manager.AllowHostPolicy,
        Cache:      manager.CertCache,
        Client:     client,
    }

    return manager
}
Run Code Online (Sandbox Code Playgroud)

caching go

5
推荐指数
1
解决办法
114
查看次数

标签 统计

caching ×1

go ×1