Как удалить сертификат из хранилища Traefik acme при сохранении в консул КВ - PullRequest
1 голос
/ 12 апреля 2019

У меня работает Traefik с магазином Consul KV.Как удалить запись из хранилища сертификатов acme в Консуле или принудительно продлить только один домен / внешний интерфейс?

Проблема: каким-то образом один из внешних доменов был сохранен с неверным сертификатом.Он ссылается на сертификат из другого домена (который также является внешним интерфейсом в Traefik).

Я смог проверить acme json, получив значение консула для ключа traefik/acme/account/object, декодировать и распаковать его, и этоэто запись из массива Certs:

{
    "Domains":{
        "Main":"my.domain1.com",
        "SANs":null
    },
    "Certificate":{
        "Domain":"my.domain2.com",
        "CertURL":"https://acme-v02.api.letsencrypt.org/acme/cert/idfordomain2",
        "CertStableURL":"https://acme-v02.api.letsencrypt.org/acme/cert/idfordomain2",
        "PrivateKey":"...",
        "Certificate":"..."
    }
}

Как видите, сертификат my.domain2.com каким-то образом был сохранен для записи my.domain1.com, поэтому это приводит кпредупреждение о недействительном сертификате в браузере.Я хочу очистить всю запись, чтобы Traefik получил новый сертификат.Я использую Консул, и он сохраняется в двоичном виде, поэтому я не могу просто отредактировать JSON.

1 Ответ

0 голосов
/ 12 апреля 2019

Самый простой способ - использовать консоль CLI.Утилита также используется для запуска сервера, и в идеале вы должны использовать ту же версию, что и для ваших серверов.Убедитесь, что вы экспортируете переменные среды: CONSUL_HTTP_ADDR - указывает на консул-сервер, по умолчанию http://127.0.0.1:8500 и CONSUL_HTTP_TOKEN - это токен ACL, если на вашем сервере включены ACL, как и должно быть в производственных средах.

Затем вы просто запускаете следующую команду

consul kv put traefik/acme/account/object @traefik.json

Где trafik.json - это json-файл с обновленными значениями, который вы хотите изменить в хранилище Consul KV.

Или вы можете использоватьHTTP API: Консул Создать / Обновить ключ

curl -X PUT --data @traefik.json http://<your-server-url>:<port>/v1/kv/traefik/acme/account/object

Если ваш сервер поддерживает ACL, вам нужно добавить следующий заголовок в запрос curl, с <your-acl-token>, который был выданВы: -H "X-Consul-Token: <your-acl-token>"

...