如何在docker合成文件中引用traefik v2的自签名SSL证书? [英] How do I reference a self-signed SSL certificates for traefik v2 in a docker-compose file?

查看:0
本文介绍了如何在docker合成文件中引用traefik v2的自签名SSL证书?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在docker组成的YAML文件中,用于引用Træfik v2的自签名证书的文档非常有限。以下是Let's Encrypt的操作方法:

https://github.com/containous/blog-posts/blob/master/2019_09_10-101_docker/docker-compose-07.yml#L11-L14

version: "3.3"

services:
  traefik:
    image: "traefik:v2.0.0"
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --providers.docker
      - --api
      - --certificatesresolvers.leresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
      - --certificatesresolvers.leresolver.acme.email=your@email.com
      - --certificatesresolvers.leresolver.acme.storage=/acme.json
      - --certificatesresolvers.leresolver.acme.tlschallenge=true

但我尝试检查了文档,在没有Toml文件的情况下,我找不到在docker-compose文件中引用自签名证书的任何方法。

我已经尝试过了:

version: "3.3"

services:
  traefik:
    image: "traefik:v2.0.0"
    command:
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --providers.docker
      - --api
      - --providers.docker.tls.cert=/etc/certs/server.crt
      - --providers.docker.tls.key=/etc/certs/server.key

但我收到以下错误:

无法检索扩展坞客户端和服务器主机的信息: 连接过程中出错:获取 Https://%2Fvar%2Frun%2Fdocker.sock/v1.24/version:http:服务器已给予 HTTPS客户端的HTTP响应";ProviderName=docker

以下是我使用过的资源,它们没有提供任何方法来设置自签名证书以在docker组成的YAML文件中为Træfik v2启用HTTPS:

我确实在此页面上看到了以下内容:https://docs.traefik.io/https/tls/#user-defined

tls:
  certificates:
    - certFile: /path/to/domain.cert
      keyFile: /path/to/domain.key

但它是For文件YAML配置文件,我需要将它转换为与上面他们为We‘s Encrypt所做的相同的docker编写的YAML文件。

推荐答案

目前似乎无法执行此操作。有人在Træfik community forum上发布了一个非常类似的问题。

如果Træfik通过secure TCP endpoint而不是您想要的文件套接字监听Docker事件,则您作为标志传递的证书(Providers.docker.tls.cert和Providers.docker.tls.key)非常有用。

将所有配置都配置在单个docker合成文件中是很酷的,但遗憾的是,自签名相关配置必须存储在单独的文件中。

以下是该记录的示例:

文件docker-pose.yml

traefik:
  image: traefik:v2.1
  command:
    - --entrypoints.web.address=:80
    - --entrypoints.websecure.address=:443
    - --providers.docker=true
    - --providers.file.directory=/etc/traefik/dynamic_conf
    - --providers.file.watch=true
  ports:
    - 80:80
    - 443:443
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock:ro
    - ./certs/:/certs/:ro
    - ./traefik.yml:/etc/traefik/dynamic_conf/conf.yml:ro

web:
  image: nginx:1.17.8-alpine
  labels:
    # http with redirection
    - traefik.http.middlewares.redirect-middleware.redirectscheme.scheme=https
    - traefik.http.routers.web-router.entrypoints=web
    - traefik.http.routers.web-router.rule=Host(`your-domain.net`)
    - traefik.http.routers.web-router.middlewares=redirect-middleware
    # https
    - traefik.http.routers.websecure-router.entrypoints=websecure
    - traefik.http.routers.websecure-router.tls=true
    - traefik.http.routers.websecure-router.rule=Host(`your-domain.net`)

文件traefik.yml

tls:
  certificates:
    - certFile: /certs/awx.afone.priv.crt
      keyFile: /certs/awx.afone.priv.key

这篇关于如何在docker合成文件中引用traefik v2的自签名SSL证书?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆