首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Traefik和自签名SSL

Traefik和自签名SSL
EN

Stack Overflow用户
提问于 2019-06-18 06:25:18
回答 1查看 6.7K关注 0票数 4

Noob到Traefik和Docker。我已经准备了一个自签名证书,使用:

代码语言:javascript
复制
openssl req -x509 -newkey rsa:4096 -keyout www.example.co.uk.key -out www.example.co.uk.crt-days 365

在我的traefik.toml文件中有:

代码语言:javascript
复制
[entryPoints]
  [entryPoints.http]
  address = ":80"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]
    [[entryPoints.https.tls.certificates]]
    certFile = "certs/www.example.co.uk.crt"
    keyFile = "certs/www.example.co.uk.key"

但是,这会导致:

代码语言:javascript
复制
traefik          | time="2019-06-17T22:11:17Z" level=debug msg="Serving default cert for request: \"www.example.co.uk\""
traefik          | time="2019-06-17T22:11:17Z" level=debug msg="http: TLS handshake error from 172.20.0.1:57770: tls: no certificates configured"

如果我省略证书定义,使traefik.toml读取为:

代码语言:javascript
复制
[entryPoints]
  [entryPoints.http]
  address = ":80"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]
  #  [[entryPoints.https.tls.certificates]]
  #  certFile = "certs/www.example.co.uk.crt"
  #  keyFile = "certs/www.example.co.uk.key"

我得到了Traefik提供的虚拟证书,它工作得很好,但我只想弄清楚为什么我定义的证书没有被使用。

在我的docker-compose.yml中,我相信我已经挂载了正确的卷:

代码语言:javascript
复制
volumes:
  - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
  - ./traefik.toml:/traefik.toml
  - /var/www/docker/certs:/certs

证书驻留在相对于我的docker-compose.yml和traefik.toml文件的certs/。权限似乎也很好,都是根用户拥有的- crt拥有644,key拥有600。

如何使用自签名证书而不是Traefiks默认值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-18 06:50:05

可能是路径不匹配,特别是某些路径是相对路径,而其他路径是绝对路径。在合成文件中尝试执行以下操作(本地证书的相对路径):

代码语言:javascript
复制
volumes:
  - /var/run/docker.sock:/var/run/docker.sock
  - ./traefik.toml:/traefik.toml
  - ./certs:/certs

然后切换到toml中的绝对路径(证书上的前导斜杠):

代码语言:javascript
复制
[entryPoints]
  [entryPoints.http]
  address = ":80"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]
    [[entryPoints.https.tls.certificates]]
    certFile = "/certs/www.example.co.uk.crt"
    keyFile = "/certs/www.example.co.uk.key"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56639602

复制
相关文章

相似问题

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