Alle Verbindungen zwischen TeamViewer Clients verwenden Zertifikate, um die Identität der beiden Teilnehmer zu authentifizieren. Diese Zertifikate werden für einzelne TeamViewer IDs von der TeamViewer CA ausgestellt und verhindern, dass sich diese Geräte als ein anderes ausgeben können. Die Funktion "bring your own certificate" (BYOC) ermöglicht es TeamViewer Benutzern, ihre eigenen Zertifikate zur Authentifizierung der an einer TeamViewer Verbindung beteiligten Geräte zu verwenden. Dies ist unabhängig von und immer zusätzlich zur Authentifizierung der TeamViewer Zertifikate.

TeamViewer Installationen können so konfiguriert werden, dass eine benutzerdefinierte Zertifikatsauthentifizierung für eingehende Verbindungen, für ausgehende Verbindungen oder für beide erforderlich ist. Wenn die benutzerdefinierte Zertifikatsauthentifizierung erforderlich ist, kann die Verbindung nur dann erfolgreich sein, wenn die andere Seite über einen privaten Schlüssel für ein von der konfigurierten Zertifizierungsstelle signiertes Zertifikat verfügt. Dies ist eine effektive Möglichkeit, TeamViewer Verbindungen auf eine bestimmte Gruppe von Geräten zu beschränken.

Bescheinigungen

Die Verwendung von BYOC erfordert eine einzige Zertifizierungsstelle (CA), die die Zertifikate aller Geräte signiert, die sich authentifizieren müssen. Alle Geräte, die eine Zertifikatsauthentifizierung von anderen Geräten benötigen, müssen Zugriff auf das CA-Zertifikat haben. Alle Geräte, die sich gegenüber anderen Geräten authentifizieren wollen, müssen Zugriff auf ein von der CA signiertes Zertifikat, den dazugehörigen privaten Schlüssel und alle Zwischenzertifikate (falls vorhanden) haben. TeamViewer unterstützt X.509-Zertifikate und kann sie und ihre privaten Schlüssel entweder aus Dateien oder aus dem Vertrauensspeicher Windows importieren.

Verwendung des Windows Trust Store

Zertifikate und private Schlüssel, die aus dem Vertrauensspeicher Windows geladen werden, müssen im maschinenweiten Vertrauensspeicher installiert sein. Auf diesen Speicher kann mit certlm.msc zugegriffen werden.

Das CA-Zertifikat muss im Verzeichnis "Trusted Root Certification Authorities" installiert sein. Das spezifische CA-Zertifikat, das für die Authentifizierung verwendet wird, wird durch seinen eindeutigen, hexadezimal codierten Fingerabdruck identifiziert. Der Fingerabdruck ist als "Thumbprint" auf der Registerkarte "Details" zu finden, wenn Sie auf das gewünschte Zertifikat doppelklicken.

Das Gerätezertifikat muss im Verzeichnis "Personal" der Zertifikate des lokalen Computers installiert sein. Es muss über einen privaten Schlüssel verfügen; dies kann durch Doppelklick auf das Zertifikat überprüft werden, wobei ein kleines Schlüsselsymbol angezeigt wird.

Der Einfachheit halber kann die BYOC-Funktion so konfiguriert werden, dass sie das Client-Zertifikat mit demselben Namen wie der lokale Rechner verwendet. Dies ermöglicht die Verwendung der gleichen Konfiguration für alle Rechner und ist die empfohlene Methode zum Einrichten der Client-Zertifikate.

Verwendung von Zertifikatsdateien

Zertifikate und private Schlüssel, die aus Dateien geladen werden, müssen entweder DER-kodierte binäre X.509 oder Base-64-kodierte X.509 (PEM-Format) sein. Andere Formate wie PFX werden nicht unterstützt.

Wenn es Zwischenzertifikate zwischen dem Gerät und den Stammzertifikaten gibt, müssen diese in die Gerätezertifikatsdatei aufgenommen werden. Dies wird nur bei Dateien im PEM-Format unterstützt; Dateien im DER-Format können keine Zertifikatsketten enthalten.

Die Datei, die den privaten Schlüssel enthält, sollte durch die Zugriffskontrollen des Betriebssystems ausreichend geschützt sein. Wenn der Dienst TeamViewer läuft, greift er auf den privaten Schlüssel zu, so dass auf Windows nur der Zugriff für den Benutzer SYSTEM erforderlich ist.

Konfiguration

Standardmäßig ist die BYOC-Funktion deaktiviert, und weder eingehende noch ausgehende Verbindungen erfordern eine Zertifikatsauthentifizierung. Umgekehrt ist es auch nicht möglich, eine Verbindung zu einem Rechner herzustellen oder Verbindungen von einem Rechner zu empfangen, der eine Zertifikatsauthentifizierung erfordert.

Um die BYOC-Funktion zu aktivieren und eine Zertifikatsauthentifizierung zu verlangen, muss eine Konfigurationszeichenfolge in den Einstellungen von TeamViewer platziert werden. Diese befinden sich in der Windows -Registrierung. Der genaue Ort hängt davon ab, welche Kombination von 32-Bit- oder 64-Bit-Versionen von Windows und TeamViewer verwendet wird:

Die BYOC-Konfiguration befindet sich im Unterschlüssel "Security". Dieser Registrierungsschlüssel muss erstellt werden, wenn er noch nicht vorhanden ist. Um die BYOC-Funktion zu aktivieren, muss dann ein neuer Wert mit dem Typ "String" und dem Namen "BYOC_Configuration" erstellt werden.

Wenn dieser Wert existiert und nicht leer ist, ist die BYOC-Funktion aktiv, auch wenn die Konfiguration ungültig ist. Bei einer ungültigen Konfiguration sind keine Verbindungen möglich.

PowerShell kann verwendet werden, um diesen Wert über die Befehlszeile zu erstellen:

New-Item -Force `
         -Path HKLM:\SOFTWARE\TeamViewer\Security
New-ItemProperty -Force `
                 -Path HKLM:\SOFTWARE\TeamViewer\Security `
                 -Name BYOC_Configuration

Die Konfiguration selbst verwendet das JSON-Format. Das JSON kann entweder direkt eingegeben oder in den Registrierungs-Editor kopiert werden, aber die Benutzeroberfläche lässt nur eine Zeile zu, so dass das JSON von allen Zeilenumbrüchen befreit werden muss. Alternativ kann der Registrierungsschlüssel auch aus einer Datei über die PowerShell gesetzt werden. Angenommen, die Konfiguration ist in einer Datei namens TeamViewerBYOC.json im aktuellen Verzeichnis gespeichert, kann sie wie folgt geladen werden:

New-ItemProperty -Force `
                 -Path HKLM:\SOFTWARE\TeamViewer\Security `
                 -Name BYOC_Configuration `
                 -Value $(Get-Content TeamViewerBYOC.json)

Der Inhalt des JSON bestimmt, wann eine Zertifikatsauthentifizierung erforderlich ist und wo die Zertifikate zu finden sind. Die folgenden Abschnitte zeigen einige Beispielkonfigurationen.

Verwendung des Windows Trust Store

Zertifikate und private Schlüssel können aus dem rechnerweiten Windows Vertrauensspeicher geladen werden. Um das richtige Zertifikat zu identifizieren, kann der TeamViewer -Client nach einem Zertifikat mit demselben Namen wie der lokale Rechner suchen. Dieses Zertifikat wird in diesem Dokument als host Zertifikat bezeichnet.

Die Konfiguration zum Laden des host Zertifikats sieht wie folgt aus:

{
 "cert": {
  "windows": {
   "use_host_certificate": true
  }
 }
}

Dadurch wird das Zertifikat host zur Authentifizierung bei diesem Gerät verwendet und die Zertifizierungsstelle, die das Zertifikat host signiert hat, zur Authentifizierung anderer Geräte verwendet. Durch die Identifizierung des richtigen Zertifikats anhand des Hostnamens kann diese Konfiguration auf verschiedenen Geräten verwendet werden und die gerätespezifischen Daten nutzen.

Alternativ kann das CA-Zertifikat auch explizit über seinen Fingerabdruck angegeben werden:

{
 "cert": {
  "windows": {
   "use_host_certificate": true
  }
 },
 "root_ca": {
  "windows": {
   "fingerprint": "d2dcdd02666b6335736c137fbbecff84730837af"
  }
 }
}

Verwendung von Zertifikatsdateien

Alternativ dazu können Zertifikate auch aus Dateien geladen werden. Für das Client-Zertifikat muss der Schlüssel ebenfalls als Datei verfügbar sein, und zwar im gleichen Format (PEM oder DER) wie das Zertifikat selbst. Nur der Dienst TeamViewer muss Zugriff auf den Schlüssel haben; unter Windows läuft dieser Prozess als Benutzer SYSTEM. Es wird empfohlen, den Zugriff auf die private Schlüsseldatei zu beschränken.

Falls Zwischenzertifikate vorhanden sind, sollten sie an die Client-Zertifikatsdatei angehängt werden. In diesem Fall muss eine PEM-Datei verwendet werden; es ist nicht möglich, eine Zertifikatskette mit DER-Dateien zu verwenden.

Die Konfiguration zum Laden von PEM-Dateien sieht wie folgt aus:

{
 "cert": {
  "pem": {
   "path": "/etc/teamviewer/certs/client_chain.pem",
   "key_path": "/etc/teamviewer/certs/client.key"
  }
 },
 "root_ca": {
  "pem": {
   "path": "/etc/teamviewer/certs/ca.pem"
  }
 }
}

Alternativ dazu sieht das Laden von binären DER-Dateien folgendermaßen aus:

{
 "cert": {
  "der": {
   "path": "/etc/teamviewer/certs/client.der",
   "key_path": "/etc/teamviewer/certs/client.key"
  }
 },
 "root_ca": {
  "der": {
   "path": "/etc/teamviewer/certs/ca.der"
  }
 }
}

Deaktivieren der Zertifikatsüberprüfung

Standardmäßig ist die Authentifizierung sowohl für eingehende als auch für ausgehende Verbindungen erforderlich. Diese können im Abschnitt root_ca einzeln deaktiviert werden.

Um nur Zertifikate für eingehende Verbindungen zu verlangen:

{
 "cert": {
  ...
 },
 "root_ca": {
  "dont_validate_outgoing": true
 }
}

Alternativ können Sie auch nur Zertifikate für ausgehende Verbindungen verlangen:

{
 "cert": {
  ...
 },
 "root_ca": {
  "dont_validate_incoming": true
 }
}

Beide Optionen können so kombiniert werden, dass keine Zertifikatsauthentifizierung für eingehende oder ausgehende Verbindungen erforderlich ist. Dies kann nützlich sein, da der Client sich so trotzdem bei anderen Geräten authentifizieren kann, die eine Zertifikatsauthentifizierung erfordern.

Verbesserte Sicherheit mit Zertifikatswiderrufsüberprüfung durch CRLs

Darüber hinaus ermöglicht eine erweiterte Sicherheitsfunktion die Überprüfung von Zertifikaten anhand von Certificate Revocation Lists (CRLs), sofern diese unterstützt werden. Standardmäßig ist die CRL-Überprüfungsoption nicht aktiviert. Dies bedeutet, dass zusätzlich zu den bestehenden Methoden nun ein Mechanismus vorhanden ist, um Zertifikate mithilfe von CRLs (Certificate Revocation Lists) zu widerrufen und zu überwachen.

{ 
"cert": { 
... 
}, 
"root_ca": { 
"verify_crl": true 
} 
} 

(Das ausstellende Zertifikat bezieht sich in diesem Abschnitt auf das RootCA-Zertifikat oder das IntermediateCA-Zertifikat, das das nächste Zertifikat in der Kette ausstellt. Beispiel: RootCA->IntermediateCA->Client, RootCA stellt IntermediateCA aus und IntermediateCA stellt RootCA aus)

(Ausgestelltes Zertifikat in diesem Abschnitt bezieht sich auf IntermediateCA-Zertifikate oder Client-Zertifikate, die von dem vorherigen Zertifikat in der Kette ausgestellt werden. Z. B. RootCA->IntermediateCA->Client, IntermediateCA wird von RootCA ausgestellt, und Client wird von IntermediateCA ausgestellt)

Jedes ausstellende Zertifikat kann ein ausgestelltes Zertifikat aus bestimmten Gründen widerrufen, was in der CRL mit der Seriennummer des widerrufenen Zertifikats aktualisiert wird.

Die CRL wird von einer URL heruntergeladen, die im Zertifikat als CRL-Verteilungspunkt verfügbar ist. Zertifikate dürfen mehrere URLs in CRL-Verteilungspunkten unterstützen, also mehrere CRLs für ein Zertifikat. CRLs im PEM- und DER-Format werden unterstützt. Momentan werden nur Basis-CRLs unterstützt; es gibt keine Unterstützung für Delta-CRLs.

Wie wird die Zertifikatsüberprüfung durchgeführt?

Für eine Zertifikatskette, sei es RootCA->Client oder RootCA->IntermediateCA->Client, werden für jedes ausgestellte Zertifikat über Verteilungspunkte (URL/s) CRLs heruntergeladen. Die ausgestellten Zertifikate werden dann anhand der CRL/s überprüft.

Die Überprüfung schlägt fehl; daher schlägt die Authentifizierung in einem der folgenden Szenarien fehl:

  • wenn eine Zertifikatskette nicht überprüfbar ist oder die Zertifikate abgelaufen sind
  • wenn eine URL nicht erreichbar ist oder das Herunterladen der CRL nicht zulässt
  • wenn eine CRL nicht das richtige CRL-Format hat, eine leere Datei ist oder Bytes fehlen
  • wenn eine CRL abgelaufen ist
  • wenn die CRL nicht vom ausstellenden Zertifikat einer Zertifikats-URL erstellt wird
  • wenn ein ausgestelltes Zertifikat widerrufen wird

Beschränkungen

Diese Funktion befindet sich noch in der Entwicklung und hat zur Zeit noch einige bekannte Einschränkungen:

  • Besprechungen fallen von vornherein nicht unter die BYOC-Beschränkungen.
  • Diese Funktion ist derzeit nur mit Windows kompatibel.