如何在保存给领事KV时从Traefik acme存储中删除证书

问题描述 投票:0回答:1

我有Traefik与Consul KV商店一起运行。如何从Consul中的极限证书存储中删除记录,或强制仅对一个域/前端进行续订?

问题:不知何故,其中一个前端域名已使用错误的证书保存。它引用了来自不同域的证书(也是Traefik的前端)。

我能够通过获取traefik/acme/account/object密钥的consul值来检查acme json,解码并解压缩它,这是来自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获得新的证书。我正在使用Consul并将其保存为二进制文件,所以我不能只编辑json。

traefik consul
1个回答
0
投票

最简单的方法是使用consul CLI实用程序。该实用程序还用于运行服务器,理想情况下,您应使用与用于服务器的版本相同的版本。确保导出环境变量:CONSUL_HTTP_ADDR - 指向consul服务器,默认为http://127.0.0.1:8500CONSUL_HTTP_TOKEN - 如果启用了服务器上的ACL,则为ACL令牌,因为它应该在生产环境中。

然后你只需运行以下命令

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

其中trafik.json是具有更新值的json文件,您希望在Consul KV商店中更改。

或者您可以使用HTTP API:Consul Create/Update Key

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>"

© www.soinside.com 2019 - 2024. All rights reserved.