首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Traefik acme超时

Traefik acme超时
EN

Stack Overflow用户
提问于 2019-09-11 23:03:09
回答 1查看 578关注 0票数 4

我正在尝试让Traefik在AKS中正常工作。总体而言,它工作得很好,但是我无法让ACME证书工作。下面附上了我的traefik.toml配置,在上面我找不到任何奇怪的东西。

在这个用例中,提到的3个域都是虚拟的,因为它们实际上是存在的,并且也是回复的

代码语言:javascript
复制
# traefik.toml
logLevel = "info"
defaultEntryPoints = ["http","https"]
[entryPoints]
  [entryPoints.http]
  address = ":80"
  compress = true
  [entryPoints.https]
  address = ":443"
  compress = true
    [entryPoints.https.tls]
      [[entryPoints.https.tls.certificates]]
      CertFile = "/ssl/tls.crt"
      KeyFile = "/ssl/tls.key"
  [entryPoints.traefik]
  address = ":8080"
[ping]
entryPoint = "http"
[kubernetes]
[traefikLog]
  format = "json"
[acme]
KeyType = "RSA4096"
email = "pimjansen@domain.com"
storage = "/acme/acme.json"
entryPoint = "https"
onHostRule = true
acmeLogging = true
  [acme.httpChallenge]
  entryPoint = "http"
[[acme.domains]]
   main = "traefik.domain.com"
[[acme.domains]]
   main = "elasticsearch.domain.com"
[[acme.domains]]
   main = "kibana.domain.com"
[api]
  entryPoint = "traefik"
  dashboard = true

我收到的实际错误是这样的:

代码语言:javascript
复制
{"level":"error","msg":"Unable to obtain ACME certificate for domains \"traefik.hardstyletop40.com\" : unable to generate a certificate for the domains [traefik.domain.com]: acme: Error -\u003e One or more domains had a problem:\n[traefik.domain.com] acme: error: 400 :: urn:ietf:params:acme:error:connection :: Fetching http://traefik.hardstyletop40.com/.well-known/acme-challenge/mYkyJzIM-6Y2UIknhXpCkUUTZWjzsAeMuqx7eDCZloY: Error getting validation data, url: \n","time":"2019-09-11T14:47:13Z"}

关于挑战的详细信息:

代码语言:javascript
复制
"challenges": [
    {
      "type": "http-01",
      "status": "invalid",
      "error": {
        "type": "urn:ietf:params:acme:error:connection",
        "detail": "Fetching http://traefik.domain.com/.well-known/acme-challenge/mYkyJzIM-6Y2UIknhXpCkUUTZWjzsAeMuqx7eDCZloY: Error getting validation data",
        "status": 400
      },
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/293838266/LPH2sA",
      "token": "mYkyJzIM-6Y2UIknhXpCkUUTZWjzsAeMuqx7eDCZloY",
      "validationRecord": [
        {
          "url": "http://traefik.domain.com/.well-known/acme-challenge/mYkyJzIM-6Y2UIknhXpCkUUTZWjzsAeMuqx7eDCZloY",
          "hostname": "traefik.hardstyletop40.com",
          "port": "80",
          "addressesResolved": [
            "13.79.159.165"
          ],
          "addressUsed": "13.79.159.165"
        }
      ]
    },

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2019-09-25 17:29:01

letsencrypt的工作原理是在您指定的How服务器上的.well-known目录中放置一个文件。你是说它们是假的,所以你可能是在本地做?在任何情况下,如果在the服务器上找不到自动生成的文件,则无法验证证书是从"owning“域请求的。

流程的工作方式大大简化了:

  1. letsencrypt ->生成文件名: abc133......
  2. letsencrypt -> find webroot in webserver config
  3. letsencrypt -> copy file to .webroot在给定域的webroot中加密
  4. letsencrypt ->向letsencrypt.org dns ->发送带有文件名和域名的few请求尝试从给定域中请求文件通过dns
  5. ->成功请求文件并验证,输出证书
  6. letsencrypt ->读取证书并复制到证书文件夹,生成几个符号链接

<代码>H117如果需要加密->修改few服务器配置<代码>H218<代码>G219

现在,如果您正在使用虚拟域,而不是在活动服务器上,则上述过程将在步骤3失败,这将导致步骤5失败,这将导致您得到一个错误。

另一种方法是,如果无法在set服务器上运行命令来生成证书,则可以设置DNS记录密钥进行验证。

代码语言:javascript
复制
sudo certbot -d your.dummy.com --manual --preferred-challenges dns certonly

这将为您提供一个代码,您需要将其放入域服务器上的txt记录中

完成后,您可以在letsencrypt应用程序中确认您已经设置了记录并继续。

简而言之,如果您无法在you服务器上运行命令来生成证书,或者无法修改dns记录,则无法通过letsencrypt获取证书。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57891977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档