Der Befehl StartTLS (auch bekannt als „Op­por­tu­ni­stic TLS“) erweitert das Protokoll Transport Layer Security (TLS), um mithilfe des TLS-Pro­to­kolls die Kom­mu­ni­ka­ti­on von In­for­ma­tio­nen zu ver­schlüs­seln.

Wie funk­tio­niert StartTLS?

Als Pro­to­koll­er­wei­te­rung für TLS bietet StartTLS den großen Vorteil, dass die Ver­schlüs­se­lung nicht die Kom­mu­ni­ka­ti­on mit Clients behindert, die die Methode nicht un­ter­stüt­zen. Mit StartTLS gibt es also weitaus weniger Kom­pa­ti­bi­li­täts­pro­ble­me. Ver­wei­gert ein Server jedoch TLS, muss ein Mail­pro­gramm (Client) wissen, wie mit den Daten verfahren werden soll. Ein weiterer Vorteil besteht in der beid­sei­ti­gen Aus­hand­lung der Ver­schlüs­se­lung, wodurch bei einem Kom­mu­ni­ka­ti­ons­fehl­schlag au­to­ma­ti­sier­te Prozesse das Ein­grei­fen des Admins bzw. Nutzers über­flüs­sig machen.

Beim StartTLS-Verfahren startet eine Ver­bin­dung immer un­ver­schlüs­selt, und zwar auf dem Port, auf dem Klartext vor­ge­se­hen ist. Erst nach Aus­füh­rung des StartTLS-Befehls handelt das Protokoll mit dem Client die Ver­schlüs­se­lung aus, dabei wird auch keine neue Ver­bin­dung her­ge­stellt. Dank der StartTLS muss bei einem Fehler in der Kom­mu­ni­ka­ti­on kein Port­wech­sel erfolgen und der Client kann einfach auf das vom E-Mail-Server be­reit­ge­stell­te StartTLS-Verfahren zu­rück­grei­fen.

Bild: Übersichtsgrafik zur Funktionsweise von StartTLS
Bei der Kom­mu­ni­ka­ti­on zweier E-Mail-Server sorgt StartTLS für die Ver­schlüs­se­lung, wenn beide Seiten StartTLS un­ter­stüt­zen.

Beispiel: E-Mail

Eine E-Mail soll über das TLS-Verfahren ver­schlüs­selt werden. Das Protokoll StartTLS wird gewählt, um die Ver­schlüs­se­lungs­me­tho­de pro­blem­los in den normalen Betrieb ein­zu­bin­den. Die ent­spre­chen­de Option finden Sie nor­ma­ler­wei­se in der Ac­count­kon­fi­gu­ra­ti­on bzw. den Kon­to­ein­stel­lun­gen Ihres E-Mail-Clients. Nach dem Senden der E-Mail startet die Kom­mu­ni­ka­ti­on:

  1. Der Client sendet einen EHLO-Request, um die Ver­schlüs­se­lungs­me­tho­den zu erfragen.
  2. Der Mail­ser­ver antwortet mit „250-STARTTLS“ und teilt damit mit, dass er StartTLS ak­zep­tiert.
  3. Der Client sendet „STARTTLS“, um die Ver­schlüs­se­lung zu starten.
  4. Der Server antwortet mit dem Sta­tus­code „220 OK“.
Eigene E-Mail-Adresse erstellen
E-Mail-Kom­plett­pa­ke­te vom deutschen Markt­füh­rer
  • Mit KI schneller zur perfekten E-Mail: schreiben, über­set­zen, um­for­mu­lie­ren
  • Aus Deutsch­land – DSGVO-konform & sicher
  • Nur bei IONOS: Eigene Domain inklusive

Ein­satz­ge­bie­te von StartTLS

StartTLS kommt als Pro­to­koll­er­wei­te­rung haupt­säch­lich bei der Kom­mu­ni­ka­ti­on über E-Mail für die Pro­to­kol­le SMTP, IMAP und POP zum Einsatz. HTTP verfügt über ein eigenes Verfahren (spe­zi­fi­ziert in RFC 2817), das StartTLS al­ler­dings sehr ähnelt. Heut­zu­ta­ge ist der Einsatz von HTTPS (RFC 2818) aber üblicher. StartTLS kann außer bei den genannten E-Mail-Pro­to­kol­len bei folgenden Pro­to­kol­len zumindest den Ver­schlüs­se­lungs­pro­zess einleiten:

Bei Internet-Providern ist StartTLS mitt­ler­wei­le das mit Abstand be­lieb­tes­te E-Mail-Ver­schlüs­se­lungs­ver­fah­ren, weil es viele un­ter­schied­li­che Domains und Zer­ti­fi­ka­te auf einem Server er­mög­licht. Dabei ist das Verfahren nicht un­um­strit­ten, weil einige private Details wie die IP-Adresse zunächst un­ver­schlüs­selt über­tra­gen werden und Man-in-the-Middle-Angriffe möglich sind, indem StartTLS unbemerkt von Pro­vi­der­sei­te über­schrie­ben werden kann.

Vorteile und Nachteile von StartTLS

Nachteile werden beim StartTLS-Verfahren in Hinblick auf Si­cher­heits­soft­ware erkennbar. Firewalls müssen das Verfahren auf An­wen­dungs­schicht ana­ly­sie­ren, um ver­schlüs­sel­te von un­ver­schlüs­sel­ten Daten zu un­ter­schei­den. Ähnliches gilt für Proxys, die am liebsten mit Port-Un­ter­schei­dung arbeiten – bei StartTLS al­ler­dings werden die Ports nicht ge­wech­selt. Dadurch wird das ent­spre­chen­de Caching erschwert oder gar nicht aus­ge­führt.

In Sachen Da­ten­schutz ist StartTLS nicht un­be­denk­lich. Die meisten E-Mail-Programme nutzen die Option „TLS wenn möglich“, wodurch die Nutzenden nicht mit­be­kom­men, ob die Ver­bin­dung zum Mail­ser­ver ver­schlüs­selt ist oder nicht. Ebenso erhöht sich die Gefahr einer Man-in-the-Middle-Attacke, indem der Netz­werk­be­trei­ber die StartTLS-Er­wei­te­rung einfach her­aus­fil­tert und so die Mög­lich­keit bekommt, den Da­ten­aus­tausch mit­zu­pro­to­kol­lie­ren. Denn wird der StartTLS-Befehl nicht aus­ge­führt, werden die Daten un­ver­schlüs­selt kom­mu­ni­ziert – und der User bekommt davon in der Regel nichts mit.

Daher empfiehlt sich zunächst ein sorg­fäl­ti­ger Test, der si­cher­stel­len soll, dass der Server auch tat­säch­lich StartTLS be­herrscht. Erst dann sollte man das Verfahren stan­dard­mä­ßig einsetzen. Schlägt die ver­schlüs­sel­te Kom­mu­ni­ka­ti­on dabei fehl, muss ein externes Problem vorliegen.

Wie kann ich StartTLS testen?

TLS-Pro­to­kol­le nutzen je nach Anbieter un­ter­schied­li­che Ports. Weil StartTLS aber einfach in die Ver­bin­dung ein­ge­bet­tet werden kann und dadurch ein Port-Switching unnötig wird, lässt sich das Ver­schlüs­se­lungs­ver­fah­ren einfach mit einer ge­eig­ne­ten Konsole testen. So wird er­sicht­lich, welchen Port der jeweilige Anbieter für StartTLS verwendet. Mit folgendem Befehl lässt sich (z. B. in Netcat) prüfen, ob ein Mail­ser­ver StartTLS als Ver­schlüs­se­lungs­me­tho­de im normalen Betrieb ak­zep­tiert:

$ nc smtp.ionos.de 587
220 kundenserver.de (mreue011) Nemesis ESMTP Service ready
ehlo test.local
250-kundenserver.de Hello test.local [80.187.86.70]
250-8BITMIME
250-SIZE 141557760
250 STARTTLS
STARTTLS
220 OK
bash

Hier sollte der Befehl „STARTTLS“ vorkommen, um die Ver­schlüs­se­lung zu ak­ti­vie­ren. Sie können auch sehen, dass private Daten wie die IP-Adresse dabei un­ver­schlüs­selt über­tra­gen werden.

Für OpenSSL sieht der Befehl fol­gen­der­ma­ßen aus:

$ openssl s_client -starttls smtp -connect smtp.ionos.de:587
CONNECTED(00000005)
[…]
SSL handshake has read 4650 bytes and written 1659 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Protocol: TLSv1.3
Server public key is 3072 bit
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
250 STARTTLS
bash

Bei SMTP wiederum gestaltet sich die Au­then­ti­fi­zie­rung nicht so einfach. Abhilfe ver­schafft in den meisten Fällen das „AUTH PLAIN“-Verfahren, bei dem die Zu­gangs­da­ten in Base64 kodiert sein müssen. Dabei erstellt man mit dem Perl-Befehl $ perl -MMIME::Base64 -e 'print encode_base64("\000user-ju\000secret") einen Code, den man an­schlie­ßend an den SMTP-Server wei­ter­gibt (AUTH PLAIN [Code]). Antwortet der Server an­schlie­ßend mit Authentication succeeded (samt Code), war der Test auf StartTLS er­folg­reich. Daraufhin lassen sich weitere Mail­kom­man­dos ausführen.

Tipp

Möchten Sie StartTLS auf Servern oder Pro­to­kol­len testen, die nicht kom­pa­ti­bel zu OpenSSL sind, kann das Tool gnuts-cli (aus dem Paket gnuts-bin) Abhilfe schaffen.

Zum Hauptmenü