2017-12-05 2 views
1

Soll diese Konfiguration nicht funktionieren?traefik: passTLSCert -> Fehler beim Erstellen von TLSClientConfig

#logLevel = "DEBUG" 

defaultEntryPoints = ["https"] 

[entryPoints] 
    [entryPoints.https] 
    address = ":443" 

[file] 

# rules 
[backends] 
    [backends.backend2] 
    [backends.backend2.servers.server1] 
    url = "https://google.de:443" 
    weight = 1 

[frontends] 
    [frontends.frontend1] 
    backend = "backend2" 
    passHostHeader = true 
    passTLSCert=true 
    [frontends.frontend1.routes.default] 
    rule = "Host:search.dev" 

[web] 
    address = ":8080" 

Ich würde erwarten, https://search.dev in meinem Browser zu besuchen und sehen google.com (vorausgesetzt, dass search.dev auf 127.0.0.1 auflöst). Aber stattdessen sehe ich:

$ docker run -p 8080:8080 -p 443:443 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik 
time="2017-12-05T20:39:54Z" level=info msg="Using TOML configuration file /etc/traefik/traefik.toml" 
time="2017-12-05T20:39:54Z" level=error msg="Failed to create TLSClientConfig: no TLS provided" 
time="2017-12-05T20:39:54Z" level=error msg="Failed to create RoundTripper for frontend frontend1: no TLS provided" 
time="2017-12-05T20:39:54Z" level=error msg="Skipping frontend frontend1..." 

ich traefik ausdrücklich darum gebeten nicht die SSL-Terminierung zu tun: passTLSCert=true

Einige weitere Details:

Version:  v1.4.4 
Codename:  roquefort 
Go version: go1.9.2 
Built:  2017-11-23_10:53:58AM 
OS/Arch:  linux/amd64 

Antwort

2

Eine Sache, erwähnenswert ist, dass passTLSCert sagt Traefik um TLS-Client-Zertifikate an das Backend weiterzuleiten. Es deaktiviert die SSL-Terminierung auf Traefik nicht, wie Sie es sich erhofft haben.

Damit Ihre Konfiguration funktioniert, müssen Sie die Zertifikate angeben, die Traefik verwenden soll.

Wenn Sie ein Beispiel lokale Zertifikate verwenden würde:

#logLevel = "DEBUG" 

defaultEntryPoints = ["https"] 

[entryPoints] 
    [entryPoints.https] 
    address = ":443" 
    [entryPoints.https.tls] 
     [[entryPoints.https.tls.certificates]] 
     certFile = "example.crt" 
     keyFile = "example.key" 

[file] 

# rules 
[backends] 
    [backends.backend2] 
    [backends.backend2.servers.server1] 
    url = "https://google.de:443" 
    weight = 1 

[frontends] 
    [frontends.frontend1] 
    backend = "backend2" 
    passHostHeader = true 
    passTLSCert=true 
    [frontends.frontend1.routes.default] 
    rule = "Host:search.dev" 

[web] 
    address = ":8080" 
+0

Sie das Problem nicht lösen kann richtig vollständig – LordWilmore

+2

Du bist Dies sollte wirklich ein Kommentar, keine Antwort, wie es von Ihrem eigenen Eingeständnis. Ich habe meinen Kommentar aktualisiert, um eine korrekte Antwort und Beispiel toml config zu enthalten. –

+0

Danke für deine Antwort, @FrankHinek Vielleicht eine Folgefrage: Ist es überhaupt möglich, den TCP-Verkehr einfach zu einem Backend zu streamen, der dann die SSL-Terminierung anstelle von Traefik durchführt? – Ich