Mit Hilfe der Webseite SSL Labs könnt ihr die Sicherheit eurer HTTPS Verbindung testen. Standardmäßig schaff Traefik hier leider nur die Note „B“. Ich zeige euch hier, wie ihr dies schnell ändern könnt.

Update

12.05.2021 Fehler verbessert. Login wurde übersprungen.
30.04.2021 Fehler verbessert. Danke an Sebastian Bauer für die Hinweise.
26.04.2020 Dynamic.yml erweitert
27.03.2020 Erstellung dieser Anleitung.

In dieser Anleitung habe ich bereits beschrieben, wie man Traefik installiert und konfiguriert. Hier beziehe ich mich auf die gesamten Ordner / Dateistrukturen aus dieser Anleitung. Diese müsst ihr bei euch gegebenfalls ändern.

1. dynamic_conf.yml anlegen

Zuerst müssen wir eine Dynamische Konfigurationsdatei für Traefik anlegen.

nano /opt/containers/traefik/data/dynamic_conf.yml

Inhalt:

tls:
  options:
    default:
      minVersion: VersionTLS12

      cipherSuites:
        - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
        - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
        - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
        - TLS_AES_128_GCM_SHA256
        - TLS_AES_256_GCM_SHA384
        - TLS_CHACHA20_POLY1305_SHA256

      curvePreferences:
        - CurveP521
        - CurveP384

      sniStrict: true


http:
  middlewares:
    secHeaders:
      headers:
        browserXssFilter: true
        contentTypeNosniff: true
        frameDeny: true
        sslRedirect: true
        #HSTS Configuration
        stsIncludeSubdomains: true
        stsPreload: true
        stsSeconds: 31536000
        customFrameOptionsValue: "SAMEORIGIN"

In dieser Datei werden die TLS Verbindungen für alle späteren Anwendungen festgelegt.

2. bestehende Docker Compose Datei anpassen

Nun müssen wir noch unsere Traefik docker-compose.yml anpassen.

nano /opt/containers/traefik/docker-compose.yml

Dabei müssen wir NUR diese drei Zeilen hinzufügen:

    volumes:
      - ./data/dynamic_conf.yml:/dynamic_conf.yml
    labels:
      - "providers.file.filename=/dynamic_conf.yml"
      - "traefik.http.routers.traefik-secure.middlewares=secHeaders@file,traefik-auth"

Anschließend löscht ihr folgende Zeile:

      - "traefik.http.routers.traefik-secure.middlewares=traefik-auth"

Hier ist meine fertige Docker Compose Datei. Bei euch kann diese anders aussehen.

version: '3'

services:
  traefik:
    image: traefik:v2.1
    container_name: traefik
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    networks:
      - proxy
    ports:
      - 80:80
      - 443:443
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./data/traefik.yml:/traefik.yml:ro
      - ./data/acme.json:/acme.json
      - ./data/dynamic_conf.yml:/dynamic_conf.yml
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.entrypoints=http"
      - "traefik.http.routers.traefik.rule=Host(`traefik.euredomain.de`)"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=xxxx:xxxxxx"
      - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
      - "traefik.http.routers.traefik-secure.entrypoints=https"
      - "traefik.http.routers.traefik-secure.rule=Host(`traefik.euredomain.de`)"
      - "traefik.http.routers.traefik-secure.tls=true"
      - "traefik.http.routers.traefik-secure.tls.certresolver=http"
      - "traefik.http.routers.traefik-secure.service=api@internal"
      - "providers.file.filename=/dynamic_conf.yml"
      - "traefik.http.routers.traefik-secure.middlewares=secHeaders@file,traefik-auth"
networks:
  proxy:
    external: true

3. bestehende traefik.yml Datei anpassen

Dazu öffnen wir folgende Datei:

nano /opt/containers/traefik/data/traefik.yml

Hier fügt ihr folgendes hinzu:

  file:
    filename: "./dynamic_conf.yml"

Fertige Datei:

api:
  dashboard: true

entryPoints:
  http:
    address: ":80"
  https:
    address: ":443"

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
  file:
    filename: "./dynamic_conf.yml"

certificatesResolvers:
  http:
    acme:
      email: test@example.com
      storage: acme.json
      httpChallenge:
        entryPoint: http

4. Traefic neu starten

Nun könnt ihr Traefik per Docker neu starten. Gebt dazu folgendes ein:

#beenden
docker-compose -f /opt/containers/traefik/docker-compose.yml down

#starten
docker-compose -f /opt/containers/traefik/docker-compose.yml up -d

5. Webseite erneut testen

Nun könnt ihr den Test für euer Webseite erneut starten. Das ist mein Ergebnis.

Wenn ihr noch das Alte seht, dann müsst ihr auf „Clear Cache“ klicken.

6. Andere Docker Container absichern

Damit auch eure anderen Docker Container abgesichert sind, müsst ihr in die jeweiligen docker-compose.yml immer folgende Zeile hinzufügen:

  labels:
      - "traefik.http.routers.<Name der APP>-secure.middlewares=secHeaders@file"

Dadurch wird sich der Container immer diese Einstellungen nehmen.

7. Quellen

https://docs.traefik.io/https/tls/

https://www.ssllabs.com/ssltest/

https://www.simplecto.com/improve-traefik-https-encryption-qualys-ssl-labs-testssl-sh/

https://adminsecurity.guru/traefik-v2-ssllabs-A-plus/

Teile diesen Beitrag
Christian

Categories:

39 Kommentare

  1. Hi, danke für den super Post mit guter Beschreibung der Traefik Konfiguration im Swarm Mode. Bist du noch am forschen, wie man auch ein A+ Rating bekommt?
    Dein Screenshot zeigt die Information „This site works only in browsers with SNI support.“, welche ich auch bekomme. Zum Vergleich habe ich ein A+ Rating mit einem HAProxy und diese Information ist der einzige Unterschied. Wäre interessant zu wissen, wie man A+ erreicht.

    Danke!

      • Hallo,
        erstmal cooles Tutorial auch wenn ich es leider erst zu spät gefunden habe… hätte mir doch einiges an Zeit erspart.
        Bei mir ist der Unterschied zwischen A+ (gitlab.xxx.xx) und A (trafik.xxx.xx) der „HTTP Strict Transport Security (HSTS) with long duration deployed on this server.“ SNI Support wird bei beiden nicht angezeigt. Vielleicht hilft das ein bisschen weiter.

  2. Hi Christian!

    Vielenvielenvielenvielenvieln VIELEN Dank für diese tollen Anleitungen!
    Ich probiere mich gerade daran mittels try and error. Die Anleitungen sind eine super Hilfe!

    Stoße aber nun auf ein Problem: ich komme von der Grundinstallation und bin rüber zur Nextlcoud-Installation. Nach dem Punkt der Dateien Anpassungen wollte ich Nextcloud aufrufen zur Datenbankanbindung: da erhalte ich nun einen „404 not found“ Fehler.
    Traefik Dashboard zeigt an: „secHeaders@file not found“. Habe dieses Problem bereits in einem Kommentar gesehen und anschließend die SSL/TLS-Anleitung umgesetzt.

    Dabei ist mir folgendes aufgefallen: /opt/containers/traefik/docker-compose.yml unterscheidet sich neben den Pfaden auch in Zeile 31, da der Eintrag „- „traefik.http.routers.traefik-secure.middlewares=traefik-auth“ um den „traefik-auth,secHeaders@file“ erweitert wird.

    Füge ich dies hinzu, erhalte ich auch beim traefik einen 404 error.
    Nun stehe ich ein wenig auf dem Schlauch. Bin ich irgendwo vom roten Faden abgekommen?

    Viele Grüße aus Hamburg,
    Patrick

  3. Wenn ich diese Zeile nicht auskommentiere, ist traefik und somit auch alle anderen Dienste nicht mehr zu erreichen.

    – „traefik.http.routers.traefik-secure.middlewares=traefik-auth,secHeaders@file“

    Ist das bei Euch anders?

    Was stimmt da nicht?

    VG Hardy

  4. Hallo,
    erst mal viiiieeelen dank für deine super Anleitungen!!!
    Ich bin deiner Anleitung zur verbesserung der Sicherheit gefolgt, aber ich bekomme leider immer noch ein B Rating.
    Auch Clear Cache hilft nicht.
    Der Grund laut SSLLab ist:
    # This server does not support Forward Secrecy with the reference browsers. Grade capped to B.
    # This server supports TLS 1.0 and TLS 1.1. Grade capped to B.

    Hab ich irgendwo einen Fehler gemacht?
    Ach ja, ich hab deb Server zuhause stehen und benutze Duckdns. Kann das damit zusammenhängen?

    Gruß Bert

    • Hallo Bert,
      freut mich, dass dir meine Anleitungen gefallen 🙂

      Dass dein Server zuhause steht sollte kein Problem sein.

      Schau dir den Schritt 2 mal wieder an. Da steht ganz zu beginn, dass du zwei Zeilen hinzufügen musst.
      Die könnten vlt bei dir noch fehlen.

      LG
      Christian

  5. Hallo, danke, geile Anleitung, mein Fehler war:

    RULE
    Host(`xxxxxxxx.net`)
    NAME
    nextcloud-app-secure@docker
    ENTRYPOINTS
    https
    SERVICE
    ERRORS
    middleware „secHeaders@file“ does not exist

    Viele Grüße

    Matthias

  6. Guten tag, ich habe traefik mit hilfe der obigen anleitung installiert (raspberry 4b, arm64v8, ), allerdings bleibt die datei acme.json leer. D.h. es wird offensichtlich kein zertifikat geholt. In der log-datei von traefik steht:
    _the router traefik-secure@docker uses a non-existent resolver: http_. Ich habe die subdomains traefik und nextcloud eingerichtet (A-record) und kann die oberfläche von traefik nach bestätigung der unsicheren verbindung aufrufen. Was könnte ich falsch gemacht haben?

    Herzlichen dank.

    Mit freundlichen grüßen

    Joachim Köstler

  7. stsecludeSubdomains: true

    Ich glaube da ist ein Schreibfehler, zumindest hat es bei mir erst funktioniert als ich die ganze Zeile auskommentiert habe.
    Lustigerweise kam dann auch noch der „middleware \“secHeaders@file\“ does not exist-Fehler, der war aber weg nachdem die dynamic_conf.yml geändert wurde.

    docker logs traefik
    time=“2020-09-27T17:26:30+02:00″ level=info msg=“Configuration loaded from file: /traefik.yml“
    time=“2020-09-27T17:26:30+02:00″ level=error msg=“Cannot start the provider *file.Provider: field not found, node: stsecludeSubdomains“
    time=“2020-09-27T17:26:31+02:00″ level=error msg=“middleware \“secHeaders@file\“ does not exist“ entryPointName=https routerName=traefik-secure@docker

    • Guten Abend,

      ich arbeite mich wie so viele Schritt für Schritt durch und bin einfach begeistert.
      Meine Umgebung ist ein gehosteter Root-Server mit Proxmox.
      Ich nutze einen LXC und mit IP Tables sind Port 443 und 80 auf den LCX in beide Richtungen frei.
      Die Anleitung ist bis jetzt einfach nur TOP und es funktioniert auch alles aber das „Upgrade“ des SSL Rankings wirkt bei mir nicht.
      Folgender Log dazu:

      docker logs traefik
      time=“2021-01-05T21:38:37Z“ level=info msg=“Configuration loaded from file: /traefik.yml“
      time=“2021-01-05T21:38:37Z“ level=error msg=“Cannot start the provider *file.Provider: yaml: line 13: did not find expected ‚-‚ indicator“

      ich bin die Dateien jetzt mehrmals durchgegangen und habe auch die Server neu gestartet. Ich finde den Fehler nicht.

      Kann mir jemand sagen was Traefik für ein „-“ erwartet?

      • Hat sich erledigt.
        Das „Problem“ war, dass ich an einer Stelle in der yml von Traefik ein Leerzeichen zu viel hatte.

        Falsch:
        providers:
        docker:
        endpoint: „unix:///var/run/docker.sock“
        exposedByDefault: false
        file:
        filename: „/dynamic_conf.yml“

        Richtig:
        providers:
        docker:
        endpoint: „unix:///var/run/docker.sock“
        exposedByDefault: false
        file:
        filename: „/dynamic_conf.yml“

        Vielen Dank für die sehr guten Anleitungen.

  8. Hi!

    Coole Sache. Nur ist bei mir die dahinterliegende Site schnarchlangsam (nextcloud), und was für mein ein no-go ist, ist die Tatsache, dass traefik google-Schnüffel-Services eingebunden hat, und 3 verschiedene Fremdquellen für JavaScript verwendet. Für ein selbstgehostetes Service no way!

    Die anleitungen sind aber prinzipiell sehr gut. Danke dafür!

  9. Hallo und vielen Dank für die Anleitung, die haben mich echt gerettet.

    Bei dem SSL Test ist mir aufgefallen, das der IE11 unter Win7-8.1 und WP 8-8.1 sowie ältere Kombinationen aus Safari und OS X den TLS Handshake verweigern. Wenn diese Kombinationen auf den Server zugreifen können sollen, kann die Liste der cipherSuites um TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 erweitert werden. Dieses wird zwar als schwach bewertet, verschlechtert aber nicht den SSL Test Score.

  10. Vielen Dank mal wieder für die super Anleitung.
    Für alle die mit Gnome Online Accounts auf ihre Nextcloud zugreifen könnte es hier nach zu Problemen kommen weil openssl anscheinend mit dieser Cipher strenge noch nicht ganz klar kommt.

    Mit diesen TLS1.2 Ciphers konnte ich den Fehler bei der Anmeldung über das Gnome Controler Center beheben:

    TLS_RSA_WITH_AES_128_CBC_SHA256
    TLS_RSA_WITH_AES_256_CBC_SHA256
    TLS_RSA_WITH_AES_128_GCM_SHA256
    TLS_RSA_WITH_AES_256_GCM_SHA384

    Bin mir nicht ganz sicher, wie ich herausfinde was OpenSSL in Verbindung mit goa für Ciphers tatsächlich unterstützt, aber anscheinend braucht es eine Kombination auf RSA und AES für den Handshake.
    Wer näheres weiß….

  11. Hallo,
    weiß nicht mehr weiter. Habe die Anleitungen befolgt.
    Bei mir kommt im Firefox erst:
    PR_END_OF_FILE_ERROR
    und dann
    SSL_ERROR_INTERNAL_ERROR_ALERT

    Wenn ich traefik lokal aufrufe, geht alles. Dort wird auch kein Fehler angezeigt im Webinterface.

    Weiß jemand Rat?

    Danke.
    Tobias

  12. Hallo,
    vielen Dank für die sehr ausführlichen Anleitungen. Ich habe die Anleitung hier auf zwei Rechner 1zu1
    umgesetzt. Bei dem einen erhalte ich ein A-Report und bei dem anderen nur ein B.
    Sehr merkwürdig. Gibt es noch andere Faktoren die das ganze beeinflussen?

  13. Hallo zusammen,

    tausend Dank für die super Anleitung, die hat mir wirklich weiter geholfen,
    bei mir läuft das ganze auf einem Pi unter Raspian Buster.

    Hier noch zwei Korrekturen die ich einbauen musste:

    – Beim Filename in der traefik.yaml hat ein „.“ gefehlt, sonst wurde die dynamic_conf.yml nicht gezogen

    Old:

    file:
    filename: „/dynamic_conf.yml“

    New:

    file:
    filename: „./dynamic_conf.yml“

    – Für A+ bei SSLLabs war eigentlich alles da, ich musste aber in jeder docker-compose.yml folgende Zeile bei den Labels einbauen:

    – „traefik.http.routers.APPNAME-secure.middlewares=secHeaders@file“

    Old:
    – „traefik.enable=true“
    – „traefik.http.routers.traefik.entrypoints=http“
    – „traefik.http.routers.traefik.rule=Host(`traefik.euredomain.de`)“
    – „traefik.http.middlewares.traefik-auth.basicauth.users=xxxx:xxxxxx“
    – „traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https“
    – „traefik.http.routers.traefik.middlewares=traefik-https-redirect“
    – „traefik.http.routers.traefik-secure.entrypoints=https“
    – „traefik.http.routers.traefik-secure.rule=Host(`traefik.euredomain.de`)“
    – „traefik.http.routers.traefik-secure.middlewares=traefik-auth,secHeaders@file“
    – „traefik.http.routers.traefik-secure.tls=true“
    – „traefik.http.routers.traefik-secure.tls.certresolver=http“
    – „traefik.http.routers.traefik-secure.service=api@internal“
    – „providers.file.filename=/dynamic_conf.yml“

    New:
    – „traefik.enable=true“
    – „traefik.http.routers.traefik.entrypoints=http“
    – „traefik.http.routers.traefik.rule=Host(`traefik.euredomain.de`)“
    – „traefik.http.middlewares.traefik-auth.basicauth.users=users=xxxx:xxxxxx“
    – „traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https“
    – „traefik.http.routers.traefik.middlewares=traefik-https-redirect“
    – „traefik.http.routers.traefik-secure.entrypoints=https“
    – „traefik.http.routers.traefik-secure.rule=Host(`traefik.euredomain.de`)“
    – „traefik.http.routers.traefik-secure.middlewares=traefik-auth“
    – „traefik.http.routers.traefik-secure.tls=true“
    – „traefik.http.routers.traefik-secure.tls.certresolver=http“
    – „traefik.http.routers.traefik-secure.service=api@internal“
    – „traefik.http.routers.traefik-secure.middlewares=secHeaders@file“
    – „providers.file.filename=/dynamic_conf.yml“

    Zur Aufklärung, ich habe für jeden Container ein eignes docker-compose.yml File, deshalb habe ich diese Zeile in jedem YML einfügen müssen.
    Seit dem haben alle Seiten eine A+ Bewertung.

      • Hi Christian,

        also irgendwie will das trotzdem nicht bei mir…

        Wenn ich ‚- „traefik.http.routers.traefik-secure.middlewares=secHeaders@file“‚ in die YAMLs von Traefik oder den anderen Services einbaue (natürlich mit geändertem Namen), dann bekomme ich eben nur den „404 Not found“ angezeigt, sobald ich versuche die Seiten aufzurufen.

        Hast du da noch eine Idee? Sonst sehen die Configs eigentlich ganz gut aus.

        PS: Während ich die Zeilen drin habe und die Seiten nicht aufrufbar sind, gibt es trotzdem noch das B-Rating.

        Hoffe du meldest dich mal dazu… 🙂

        VG
        Dawid

        • Nevermind… Die Nacht war deutlich zu lang. Ich hatte die dynamic_conf.yml unter traefik/ liegen und nicht unter traefik/data/. Funktioniert jetzt! 🙂

  14. Wenn das label

    38 # - "providers.file.filename=/dynamic_conf.yml"
    39 # - "traefik.http.routers.traefik-secure.middlewares=secHeaders@file"

    in der docker-compose.yml aktiv sind, ist das Traefik-Dashboard bei mir auch ohne jegliche Authentifizierung erreichbar, wenn die beiden Zeilen auskommentiert sind wie hier zitiert, dann kommt der Login-Dialog….
    Was läuft da möglicherweise falsch? Wäre etwas fatal, wenn jeder über die subdomain traefik.example.org auf das Traefik-Dashboard schauen könnte….

  15. Hi Christian,
    vielen Dank für die Anleitung, die neben den beiden anderen Teilen so bei mir auch ziemlich gut funktioniert.
    Eine einzige Einschränkung habe ich, die ich mir nicht ganz erklären kann:
    Für das A+ Rating bei Traefik benötigt es ja u.a. diesen Eintrag in der docker.compose:
    – „traefik.http.routers.traefik-secure.middlewares=secHeaders@file“
    Wenn ich den hinzufüge, entfällt bei mir die Passwortabfrage beim Aufruf der Traefik-Domain. Nehme ich den Eintrag wieder raus, ist sie wieder da. Kannst du dir das erklären?

    Wenn ich nichts sehr dummes übersehen habe, habe ich mich an alle Schritte wie bei dir beschrieben gehalten.

    Viele Grüße,

    Martin

    • Da habe ich wohl vergessen, die Seite zu reloaden. erz-hr hatte ja schon darauf hingewiesen und du hast eine Lösung gepostet. Damit klappt es jetzt auch. Danke 🙂

    • Hallo Martin,
      das Problem liegt darin, dass die Zeile dann 2x in der Konfiguration steht. Daher müssen wir die beiden Parameter in eine Zeile schreiben. Dies hatte ich bei der Anleitung auch verbessert.

      LG
      Christian

  16. Hi, leider startet der Docker alle paar Sekunden neu, wenn ich die Änderungen der https Verschlüsselung mache. Hab es mehrere male überprüft und auch schon 2x mal alles von vorne gemacht. keine Chance. der Docker startet, die Ports werden angezeigt und im Status kommt “ Up Less than a second“. Die das Dashboard ist aber nicht erreichbar, beim erneuten Prüfen kommt im Status „Restarting (1) 27 seconds ago“.
    Wenn ich die Änderungen zurücksetze, erscheint das Dashboard wieder

  17. Hallo, ich habe mit deiner Anleitung meine externen Zugriffe eingerichtet. Soweit ist alles super. Rating A usw.
    Ich habe aber noch eine Synology NAS auf die auch extern zugreifen will. Habe dazu viel in Google gesucht.

    Wenn ich in die dynamic_conf.yml um diesen Eintrag ergänze, kann ich beim Container bitwarden nicht mehr erreichen. Die anderen Container laufen weiterhin.

    http:

    routers:

    nas220:

    service: dsm

    middlewares:
    – „user-auth“

    rule: Host(`123.example.de`)

    middlewares:
    secHeaders:
    headers:
    browserXssFilter: true
    contentTypeNosniff: true
    frameDeny: true
    sslRedirect: true
    #HSTS Configuration
    stsIncludeSubdomains: true
    stsPreload: true
    stsSeconds: 31536000
    customFrameOptionsValue: „SAMEORIGIN“

    #AUTH
    user-auth:
    basisAuth:
    users: „user:$$xyz“

    services:
    dsm:
    loadBalancer:
    servers:
    – url: „http://192.168.178.22:5000“ # Auf die richtige URL anpassen.

    Ich erhalte dann den Fehler: „404 not found“
    Traefik Dashboard zeigt an: „secHeaders@file not found“.

    Ich weiß echt nicht mehr weiter. Ohne die Ergänzung zu deinen Einträgen läuft alles.
    Kannst du mir bitte weiterhelfen!!!

  18. Trotzdem schneidet meine Seite aktuell sehr schlecht mit der Standardconfig bei https://observatory.mozilla.org ab.
    V.a. wegen dieser Punkte:
    – Content Security Policy (CSP) header not implemented
    – HTTP Strict Transport Security (HSTS) header not implemented
    – X-Content-Type-Options header not implemented
    – X-Frame-Options (XFO) header not implemented
    – X-XSS-Protection header not implemented
    – Referrer-Policy header not implemented (optional)

  19. ich bekommen auch nur noch ein B Note

    Schuld ist evtl.

    This server does not support Forward Secrecy with the reference browsers. Grade capped to B.
    This server supports TLS 1.0 and TLS 1.1. Grade capped to B.

  20. Hi Christian,

    SPEK-TA-KU-LÄR! Vielen Dank!

    Ich hab ewig versucht, das mit Containern und SSL hinzubekommen. Bin 1 Mio mal an „could not connect“ gescheitert, weil Netzwerk-Rookie. Jetzt hatz geklappt!
    Das hätte ohne diese Anleitung nicht gefunzt.

    Eine Frage habe ich habe noch: wie komme ich denn nun wieder zum Traefik zurück? Port 80/443 zeigen ja nun auf opencloud. Ein direkter Aufruf der Ip des Traefik-containers klappt auch nicht.
    Wo lauscht denn nun die Traefik-UI?

    Danke und Grüße,
    Thomas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.