为了从Let's Encrypt获得网站域的SSL证书,我必须演示对域的控制。 Let's Encrypt CA将查看请求的域名并发出一组或多组挑战。
问题1 :当我在“加密”中有一个指向VPS的域名和一个电子邮件地址时,Traefik是否可以自动进行初始身份验证过程?
第二季度:保持http(80)端口打开是否足以让我们加密以进行初始验证?
第三季度:自动更新是否需要打开80端口?还是这也可以是443端口?从现在开始最好将所有流量重定向到https。这样-Traefik / LetsEncrypt可以使用打开的443端口自动续订吗?
答案 0 :(得分:2)
答案(到目前为止):
问题1:是!电子邮件可以是您拥有的任何电子邮件地址。域名不必与您的域名相同。域名确实应该指向VPS。
问题2:是!第一次将80端口保持打开状态。安装证书后开始重定向。
问题3:是!:我找不到答案,因此我立即尝试了第一个答案中的建议。由于更改了其他设置,我重新启动了大约3次,并且Traefik日志中未显示任何错误。
现在让我们继续进行实际代码。在代码中,您可以找到3个答案。下一个文件是traefik.toml文件:
logLevel = "ERROR"
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[docker]
domain = "xyz.com"
[api]
[acme]
# Q1 - just use your email address
email = "email@example.com"
storage = "acme.json"
onHostRule = true
entryPoint = "https"
# Q3 answer = this allows for the TLS challenge on port 443
[acme.tlsChallenge]
# Q2 answer = this provides the HTTP challenge on port 80
#[acme.httpChallenge]
# entryPoint = "http"
docker-compose文件为:
version: '3'
services:
traefik:
image: traefik:v1.7
container_name: traefik
restart: always
networks:
- yourappnet
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /your_path/traefik/traefik.toml:/traefik.toml
- /your_path/traefik/acme.json:/acme.json
ports:
- "80:80"
- "443:443"
labels:
- "traefik.docker.network=yourappnet"
- "traefik.frontend.rule=Host:monitor.xyz.com"
- "traefik.port=8080"
yourapp:
image: dockerhubuser/dockerimagename:latest
ports:
- 8080
networks:
- yourappnet
labels:
- "traefik.docker.network=yourappnet"
- "traefik.frontend.rule=Host:xyz.com"
networks:
yourappnet:
driver: bridge
答案 1 :(得分:2)
第二季度和第三季度:
用于解决“让我们加密”挑战(创建或更新)的端口取决于您使用的挑战:
创建或续订使用相同的端口(取决于挑战),因此,如果您希望Traefik自动续订证书,则需要将端口保持打开状态。