Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker Traefik配置示例混合Let';s加密和购买的证书_Docker_Lets Encrypt_Traefik - Fatal编程技术网

Docker Traefik配置示例混合Let';s加密和购买的证书

Docker Traefik配置示例混合Let';s加密和购买的证书,docker,lets-encrypt,traefik,Docker,Lets Encrypt,Traefik,有了Traefik,我想只对一些新的特定前端主机规则使用Let's Encrypt,因为我已经对一些现有的前端主机规则使用了购买的证书。下面是我现有的工作示例traefik.toml,没有Let's Encrypt[acme]配置: defaultEntryPoints = ["http", "https"] [entryPoints] [entryPoints.http] address = ":80" [entryPoints.https] address = ":443"

有了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"
从我读到的内容来看,OnHostRule=true适用于所有主机规则


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

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

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

编辑1:

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

你可以在官方文件中尝试这个例子。它说它将只为提供的证书无法检查的域生成让我们加密证书

您还可以参考了解ACME let's encrypt配置中每个配置项的说明


希望这有帮助。

说你的目录和文件结构如下

 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

我已经在为我购买的证书使用HTTPS和SNI,如我的示例所示。我的问题是如何配置[acme]部分以使用Let's Encrypt for other host.tld'sCan您可以尝试官方文档中的示例吗?它说它将生成让我们只加密那些不能被提供的证书检查的域的证书。好的,这看起来很有希望。在尝试之前,我需要了解此caServer路径的用途以及在我的服务器上需要执行的操作(如果有):caServer=“”,根据中的示例,
caServer
似乎是要使用的证书颁发机构服务器。我建议你留下评论,这将使traefik使用默认的让我们加密ca服务器,这是生产ca服务器。欢迎@Jim Frenette。我会用我在评论中提供的链接更新答案,这样它会更有意义,并且正确地回答问题。