【问题标题】:Traefik Configuration Example Mixing Let's Encrypt and Purchased CertsTraefik 配置示例混合 Let's Encrypt 和购买的证书
【发布时间】:2018-03-24 20:37:54
【问题描述】:

对于 Traefik,我只想将 Let's Encrypt 用于一些新的特定前端主机规则,因为我已经将购买的证书用于一些现有的前端主机规则。这是我现有的工作示例 traefik.toml,没有 Let's Encrypt [acme] 配置:

defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.http]
  address = ":80"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]
      [[entryPoints.https.tls.certificates]]
      certFile = "/etc/traefik/certs/myhost.tld.crt"
      keyFile = "/etc/traefik/certs/myhost.tld.key"

从我读到的here OnHostRule = true 适用于所有主机规则。

是否有一个示例 Traefik 配置说明如何将 Let's Encrypt 用于特定主机,而不是用于使用已购买证书的主机?

【问题讨论】:

    标签: docker lets-encrypt traefik


    【解决方案1】:

    您可以使用带有 SNI(服务器名称指示)的 HTTPS 将特定的 SSL 证书分配给特定的域或子域。

    您可以从下面的官方文档链接中找到 HTTPS + SNI 配置的示例。

    https://docs.traefik.io/user-guide/examples/#http-https-with-sni

    编辑 1:

    是否有一个示例 Traefik 配置显示如何将 Let's Encrypt 用于特定主机,而不是用于使用已购买证书的主机?

    你可以试试官方文档this section中的例子。它说它只会为提供的证书无法检查的域生成让我们加密证书。

    您也可以参考this link了解ACME let's encrypt配置的各个配置项的解释。

    希望这会有所帮助。

    【讨论】:

    • 我已经将 HTTPS 与 SNI 一起用于我购买的证书,如我的示例所示。我的问题是如何配置 [acme] 部分以将 Let's Encrypt 用于其他 host.tld 的
    • 可以试试官方文档this section中的例子吗?它说它只会为提供的证书无法检查的域生成让我们加密证书。
    • 好吧,这看起来很有希望。在我尝试之前,我需要了解这个 caServer 路径的用途以及我需要在我的服务器上为此做什么:caServer = "172.18.0.1:4000/directory"
    • 根据this link 中的示例,caServer 似乎是要使用的证书颁发机构服务器。我建议你留下评论,这将使 traefik 使用默认的让我们加密 ca 服务器,它是生产 ca 服务器。
    • 不客气@Jim Frenette。我将使用我在 cmets 中提供的链接更新答案,以便更有意义并正确回答问题。
    【解决方案2】:

    假设你的目录和文件结构如下所示。

     traefik
     |-ssl
       |-ca.key
       |-ca_chain.crt
     |-traefik.toml
     |-acme.json
    

    更新你的 traefik.toml

    #traefik.toml
    
    debug = true
    
    defaultEntryPoints = ["http", "https"]
    
    # Force HTTPS
    [entryPoints]
      [entryPoints.http]
      address = ":80"
        [entryPoints.http.redirect]
        entryPoint = "https"
      [entryPoints.https]
      address = ":443"
        [entryPoints.https.tls]
         [[entryPoints.https.tls.certificates]]
          certFile = "/etc/traefik/ssl/ca_chain.crt"
          keyFile = "/etc/traefik/ssl/ca.key"
    
    
    # Let's encrypt configuration
    [acme]
    email = "email@domain.com" #any email id will work
    storage="/etc/traefik/acme.json"
    entryPoint = "https"
    acmeLogging=true
    onHostRule = true
    [acme.httpChallenge]
      entryPoint = "http"
    

    创建 acme.json 文件

    touch ./traefik/acme.json
    chmod 600 .traefik/acme.json
    

    使用以下命令创建容器:

    docker run --network=traefik-network -p 80:80 -p 443:443 -v /var/run/docker.sock:/var/run/docker.sock -v $PWD/traefik:/etc/traefik --name=traefik traefik:latest --api --docker
    

    【讨论】:

      猜你喜欢
      • 2018-07-02
      • 1970-01-01
      • 2018-04-23
      • 2018-09-16
      • 2020-01-06
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多