acme autocert manager игнорирует действительные сертификаты при запуске - PullRequest
0 голосов
/ 16 ноября 2018

Я сейчас создаю сервис, который использует acme / autocert.Чтобы использовать этот сервис с более чем 1 репликой, мне пришлось написать постоянный интерфейс кеша, такой как DirCache.Затем я заметил, что после перезапуска службы все действительные сертификаты в Cache игнорируются при запуске.Следующая последовательность происходит постоянно:

  • Кэш положить acme_account + ключ (даже если он существует в кэше)
  • Кэш получить acme_account + ключ
  • Получить кэшmy.domain.net (возвращает кэшированный сертификат)
  • Кэш get 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
}

1 Ответ

0 голосов
/ 21 ноября 2018

Решение этого вопроса заключается в том, что интерфейс и поведение кэша работает правильно.Моя реализация кэша была неисправна.У меня была подпрограмма в Cache.Get (...), которая читала из БД в канал, но, к сожалению, внешнее тело функции не ожидало этого канала и всегда возвращает ошибку CacheMissed.После исправления все работает нормально.Моя вина sry

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...