traefik 2.0 vs insecure SSL certificates

Guess I should quickly explain why someone would want to mess with bad SSL certificates. I mean, it sounds insecure as hell and you are right if you’re shaking your head. But sadly there are applications unable to deliver good certificates or exchange them. Best example is Ubnt and their controller for their software. They still don’t make it easy to exchange the bad certificates.

As that controller runs in a docker container here, it’s pretty logical to do a certificate replacement by proxying the web interface through Traefik. I mean, it’s GA Version is 2.0 – so what could possibly go wrong? Here’s the compose passage:

services:
unifi:
image: linuxserver/unifi-controller
restart: unless-stopped
ports:
- "3478:3478/udp"
- "10001:10001/udp"
- "6789:6789"
- "8080:8080"
- "8880:8880"
- "8443:8443"
- "8843:8843"
networks:
- traefik_proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.unifi.rule=Host(`${UNIFI_HOSTNAME}`)"
- "traefik.http.routers.unifi.entrypoints=http"
- "traefik.http.middlewares.unifi.redirectscheme.scheme=https"

- "traefik.http.routers.unifi-secure.rule=Host(`${UNIFI_HOSTNAME}`)"
- "traefik.http.routers.unifi-secure.entryPoints=https"
- "traefik.http.routers.unifi-secure.tls=true"
- "traefik.http.services.unifi-secure.loadbalancer.server.port=8443"
- "traefik.http.services.unifi-secure.loadbalancer.server.scheme=https"

environment:
- TZ="Europe/Vienna"
volumes:
- type: volume
source: unifi_data
target: /config
volume:
nocopy: true

And now this is where stuff breaks: traefik 2.0 seems to have a problem ignoring SSL certificates validity. As a temp. workaround you may want to jump the new 2.1 train which is available as release candidate. Looking through the bug list on Github, this issue was reported quite a while ago.

The matching error message as seen in the debug log:

‘500 Internal Server Error’ caused by: x509: cannot validate certificate for 172.21.0.2 because it doesn’t contain any IP SANs

Author:

6 thoughts on “traefik 2.0 vs insecure SSL certificates”

  • Moins ;-)

    Da mal eine Frage ;-) Ich habe als Backend-Service einen Apache auf Port 443… bekomme hier allerdings dann:
    Server name not provided via TLS extension
    Hmmm, hört sich so an als wenn der Traefik da kein SNI kann.
    Haste ‘ne Idee?
    LG aus Köln,

    Olli

  • Mein traefik macht hier ohne Probleme SNI – Du schreibst hier auch von einem Apache… Das ist bisschen verwirrend. Kannst du dein Setup genauer beschreiben?

  • Hi,

    der relevante Teil ist:

    deploy:
    labels:
    – traefik.http.routers.60113068-443.entrypoints=web-secure
    – traefik.http.routers.60113068-443.rule=HostRegexp(`{subdomain:(.*\.)?}exampledomain.de`)
    – traefik.http.routers.60113068-443.tls=true
    – traefik.http.routers.60113068-443.tls.options=default
    – traefik.http.routers.60113068-443.service=60113068-443@docker
    – traefik.http.middlewares.60113068-443.redirectscheme.scheme=https
    – traefik.http.services.60113068-443.loadbalancer.server.scheme=https
    – traefik.http.services.60113068-443.loadbalancer.server.port=443

    – traefik.http.routers.60113068-80.entrypoints=web
    – traefik.http.routers.60113068-80.rule=HostRegexp(`{subdomain:(.*\.)?}example-domain.de`)
    – traefik.http.routers.60113068-80.service=60113068-80@docker
    – traefik.http.services.60113068-80.loadbalancer.server.port=80

    auf 443 / 80 lauscht ein Apache2, in meinem Fall mit “richtigen” Cert.

    Errolog hat dann das hier:

    AH02645: Server name not provided via TLS extension (using default/first virtual host)

    Vielleicht haste eine Idee… kann man Dich noch auf anderen Kanälen erreichen?

    LG aus Köln, Oliver

  • Ich schätze mal, du hast ein ähnliches Setup wie ich.

    Der Apache wird wohl von draußen erreichbar sein während intern der Traefik seinen Dienst verrichtet – Ich für meinen Teil habe halt statt dem Apache einen Nginx hier und lass den Nginx direkt auf meine Dienste, die ich von Außen erreichbar benötige als Reverse Proxy drauf.

    Laut der Fehlermeldung versuchst du SNI zu machen und gibst dem Traefik keinen Hostnamen mit.

  • Hast du in deiner traefik config “insecureSkipVerify: true” gesetzt oder wie genau ignorierst du Validität des SSL Zertifikats?

  • Richtig erkannt. Alternativ kann man auch das Zertifikat – sofern es irgendwie valide ist (Nicht abgelaufen, Hostname passend)- als Trusted ins System einbauen…

Leave a Reply

Your email address will not be published. Required fields are marked *