Sie können auf Chrome OS-Geräten den Nutzerzugriff auf WLANs, interne Apps und interne Websites Ihrer Organisation steuern. Dazu verteilen Sie über einen Connector Gerätezertifikate von Ihrer lokalen Zertifizierungsstelle (CA). Der Google Cloud Certificate Connector ist ein Windows-Dienst, mit dem sich Zertifikate und Authentifizierungsschlüssel von Ihrem CA-Server sicher auf die Geräte der Nutzer verteilen lassen.
Bei ChromeOS-Geräten werden private Schlüssel für Zertifikate auf dem Gerät generiert. Der entsprechende öffentliche Schlüssel wird vorübergehend auf Google-Servern gespeichert und nach der Installation des Zertifikats gelöscht.
Systemanforderungen
- ChromeOS-Geräte mit Version 138 oder höher.
- Ein Google Cloud-Projekt (GCP) mit eingerichtetem Rechnungskonto.
Hinweis
- Die Einrichtung der Zertifikatsbereitstellung mit SCEP erfordert Fachwissen und Berechtigungen zum Verwalten des Microsoft Active Directory-Zertifikatsdienstes für Ihre Organisation. Sorgen Sie dafür, dass die entsprechenden Experten in Ihrer Organisation beteiligt sind, bevor Sie fortfahren.
- Wenn Sie für den Antragstellernamen des Zertifikats den Active Directory-Nutzernamen verwenden möchten, müssen Sie Ihr Active Directory-Verzeichnis und das Google-Verzeichnis mit Google Cloud Directory Sync (GCDS) synchronisieren. Gegebenenfalls müssen Sie hierfür GCDS einrichten.
- Informationen zum Konfigurieren Ihres Windows NDES-Servers (Network Device Enrollment Service), der Admin-Konsole und GCP für die ChromeOS-Zertifikatregistrierung finden Sie unter Zertifikatregistrierung für ChromeOS über SCEP konfigurieren.
Schritt 1: Google Cloud Certificate Connector herunterladen
Hinweis: Wenn Sie den Google Cloud Certificate Connector bereits für Mobilgeräte eingerichtet haben, können Sie diesen Schritt überspringen und direkt zu Schritt 3: Google Cloud Certificate Connector konfigurieren gehen.
Führen Sie die folgenden Schritte auf dem CA-Server oder einem Windows-Computer aus, der auf den Server zugreifen kann. Wenn Sie in Ihrer Organisation mehrere Server nutzen, können Sie auf allen denselben Zertifikat-Connector verwenden.
So laden Sie die Installationsdatei herunter und installieren sie:
Hinweis: Sie müssen Google Cloud Certificate Connector und die zugehörigen Komponenten nur einmal herunterladen, wenn Sie die Zertifikate für Ihre Organisation einrichten. Ein einzelner Zertifikat-Connector kann für alle Zertifikate und Zertifikatprofile genutzt werden.
-
Melden Sie sich mit einem Administratorkonto in der Admin-Konsole an.
Wenn Sie kein Administratorkonto verwenden, können Sie nicht auf die Admin-Konsole zugreifen.
-
Klicken Sie auf Geräte > Netzwerke.
Hierfür benötigen Sie die Administratorberechtigung Einstellungen für gemeinsam verwendete Geräte.
- Klicken Sie auf Zertifikate
Zertifizierungsstellenverbindungen
Connector herunterladen.
- Klicken Sie auf Herunterladen.
- Führen Sie das Installationsprogramm für den Zertifikat-Connector als Administrator aus.
Wichtig: Standardmäßig registriert das Installationsprogramm den Dienst für die Anmeldung mit dem Konto LocalService. Ist der Dienst registriert, wird die Software als installiert markiert. Anschließend versucht das Installationsprogramm, den Dienst zu starten. Wenn Sie den Connector zum ersten Mal installieren, wird der Dienst aufgrund fehlender erforderlicher Konfigurationsdateien nicht starten. Folgen Sie der restlichen Anleitung in diesem Artikel, um diese Konfigurationsdateien zu erhalten.
Schritt 2: Pub/Sub-Dienstkontoschlüssel herunterladen
- Rufen Sie in Ihrem Google Cloud-Projekt (GCP) Dienstkonten auf.
- Klicken Sie auf das Dienstkonto, das für den Google Cloud Certificate Connector erstellt wurde.
- Öffnen Sie Keys (Schlüssel).
- Klicken Sie auf Schlüssel hinzufügen
Neuen Schlüssel erstellen
JSON
Erstellen.
- Verschieben Sie die heruntergeladene JSON-Datei in das Installationsverzeichnis des Connectors.
Schritt 3: Google Cloud Certificate Connector konfigurieren
- Optional: Führen Sie das Konfigurationstool (
C:\Program Files\Google Cloud Certificate Connector\Config Tool.exe) als Administrator aus, um den Dienst mit einem vom Standardkonto LocalService abweichenden Kontonamen neu zu registrieren. - Erstellen Sie im während der Installation erzeugten Ordner
C:\Program Files\Google Cloud Certificate Connectoreine neue Datei namens adapter_config.json und fügen Sie die gewünschte Konfiguration ein. Eine vollständige Liste der Konfigurationsparameter finden Sie unter Google Cloud Certificate Connector – Konfigurationsparameter.
Hinweis: Zur Unterstützung der Abwärtskompatibilität kann der Connector auch mit der alten Konfigurationsdatei config.json arbeiten. Ist die Datei adapter_config.json nicht vorhanden, wird automatisch nach der alten Konfigurationsdatei gesucht. - Starten Sie den Dienst:
- Öffnen Sie "Windows-Dienste".
- Wählen Sie Google Cloud Certificate Connector aus.
- Klicken Sie auf Start. Der Status ändert sich in Aktiv. Der Dienst wird automatisch neu gestartet, wenn der Computer neu gestartet wird.
Wenn Sie einen neuen Dienstkontoschlüssel herunterladen oder die Konfigurationsdatei bearbeiten, müssen Sie den Dienst neu starten, damit die Änderungen wirksam werden.
Funktionsweise der Authentifizierung per Zertifikat über Google Cloud Certificate Connector
Google Cloud Certificate Connector ist ein Windows-Dienst, der eine exklusive Verbindung zwischen Ihrem CA-Server und Google herstellt. Der Zertifikat-Connector wird durch eine Konfigurations- und eine Schlüsseldatei konfiguriert und gesichert. Beide Dateien werden von Ihrer Organisation verwaltet.
Sie weisen Geräten und Nutzern mit Zertifikat-Profilen Zertifikate zu. Sie fügen das Profil einfach einer Organisationseinheit hinzu, um es den Nutzern darin zuzuordnen. Im Profil ist die Zertifizierungsstelle für Zertifikate enthalten. Wenn ein ChromeOS-Gerät registriert wird, wird die konfigurierte Richtlinie an das Gerät gesendet. Im Falle von Gerätezertifikaten wird das Zertifikat auf dem Gerät installiert, bevor Nutzer sich anmelden. Bei Nutzerzertifikaten erfolgt die Installation nach der Anmeldung. Wenn das Gerät bereits registriert ist oder das Nutzerprofil bereits vorhanden ist, wird das Zertifikat installiert, sobald das Gerät oder der Nutzer aktualisierte Richtlinien über die Admin-Konsole erhält.
Google Cloud Certificate Connector – Konfigurationsparameter
Definitionen
Im Folgenden finden Sie Definitionen der Konfigurationsobjekte, die vom Google Cloud Certificate Connector akzeptiert werden.
Die Datei adapter_config.json muss eine einzelne Konfiguration dieses Objekts enthalten. Sie ist das äußerste Objekt in der JSON-Datei. Sie enthält die folgenden möglichen Schlüssel und die entsprechenden Werte:
| Schlüssel | Optional/Erforderlich | Werttyp |
|---|---|---|
| legacy_configuration | Optional, wenn adapter_configuration vorhanden ist |
Legacy-Konfiguration Falls vorhanden, verwendet der Connector das Legacy-Protokoll für die Anfragen, die mit der in dieser Konfiguration enthaltenen Pub/Sub-Abo-ID verknüpft sind. Die verfügbaren Funktionen sind auf die gemäß dieser Konfiguration bereitgestellten Funktionen begrenzt. Eine bestimmte Abo-ID muss entweder in der Adapter- oder in der Legacy-Konfiguration enthalten sein, aber nicht in beiden. |
| adapter_configuration | Optional, falls legacy_configuration vorhanden ist |
Adapterkonfiguration Falls vorhanden, verwendet der Connector das neue Protokoll für Anfragen, die mit den in dieser Konfiguration enthaltenen Pub/Sub-Abo-IDs verknüpft sind. Außerdem wird der Connector selbst mit den in dieser Konfiguration angegebenen Attributen konfiguriert. |
| profile_configurations | Optional | []Profilkonfiguration |
| ca_configurations | Erforderlich, falls adapter_configuration oder profile_configurations vorhanden sind. | []CA-Konfiguration |
Hier wird die vorherige Konfiguration beschrieben, die vom Connector unterstützt wurde. Dieser Konfigurationstyp wird weiterhin unterstützt, um die Abwärtskompatibilität für aktuelle Nutzer zu ermöglichen.
Der aktuelle Connector versteht diese Konfiguration und verarbeitet die Anfragen, die von der jeweiligen subscription_id stammen, die in der legacy_configuration enthalten ist. Dabei werden die alten Protokoll ohne die Certificate Provisioning API verwendet.
Der Connector erwartet eine Schlüsseldatei (key.json), um das Dienstkonto für die Pub/Sub-Kommunikation zu authentifizieren. Das ist unverändertes Verhalten.
| Schlüssel | Optional/Erforderlich | Werttyp |
|---|---|---|
| request_subscription | Erforderlich |
String Dies ist der Name der Abo-ID, gemäß der der Connector auf Anfragen wartet. |
| response_topic | Erforderlich |
String Dies ist der Name des Themas, an das der Connector die ausgestellten Zertifikate sendet. |
| max_scep_queries_per_second | Optional |
float Der Connector verwendet diesen Parameter, um das Tempo zu steuern, mit dem er seinen Traffic an den CA-Server sendet. Wird dieser Wert nicht gefunden, wird der Standardwert 2 verwendet. |
| poll_period | Optional |
String Dieser Parameter ist veraltet. Er wird geparst, aber nicht intern vom Google Cloud Certificate Connector verwendet. |
Die Parameter dieser Konfiguration sind Attribute des Connectors selbst. Die folgenden Felder können enthalten sein:
| Schlüssel | Optional/Erforderlich | Werttyp |
|---|---|---|
| instance_id | Optional |
String Die eindeutige Kennung, die der Connector verwendet, damit er über diese ID identifiziert werden kann. Sie sollte für alle Connectors im selben Projekt einmalig sein. Falls nicht vorhanden, generiert der Connector eine zufällige GUID zur Identifizierung. |
| request_subscriptions | Erforderlich |
[]String Die voll qualifizierten Abonnementsnamen, auf die der Connector wartet. Die Abos müssen das Format projects/<projectid>/subscriptions/<id> haben. Alle Abos in dieser Liste müssen aus demselben Projekt stammen. |
| key_filename | Erforderlich |
String Der Dateiname der Schlüsseldatei, die der Connector zur Authentifizierung verwendet. Die Datei key muss sich im selben Verzeichnis wie die Datei connector executable befinden. Der Connector verwendet diese key-Datei, um die vom neuen Ablauf verwendeten Google-Dienste zu authentifizieren. Dabei werden die im Attribut request_subscription_ids angegebenen Abos überwacht und die CertificateProvisioningAPI aufgerufen. |
| proxy_mode | Optional |
String Dieses Attribut beschreibt den Proxymodus, den der Connector zum Weiterleiten seines Traffics verwendet. Derzeit sind folgende Modi möglich:
Ist proxy_mode nicht angegeben, wird system als Standard verwendet. |
| proxy_server | Erforderlich, wenn fixed_servers als proxy_mode verwendet wird. Andernfalls wird dies ignoriert. | String |
| proxy_bypass_list | Optional |
String Wird verwendet, wenn fixed_servers als proxy_mode verwendet wird. Falls nicht angegeben wird eine leere Umgehungsliste verwendet. |
| log_level | Optional |
String Hier wird das vom Connector auszugebende Protokolllevel beschrieben. Mögliche Werte: debug, info, warn, error. Der Connector gibt alle Ereignisse auf der angegebenen Ebene und höher aus. Ist nichts angegeben, wird info als Standardwert verwendet. |
| max_number_of_ongoing_requests | Optional |
int Der Connector kann eine begrenzte Anzahl von Anfragen gleichzeitig verarbeiten. Der Standardwert ist 500. Wird dieses Limit erreicht, werden keine neuen Anfragen mehr akzeptiert, bis ein Platz durch Abschluss einer Registrierung oder durch Zeitüberschreitung freigegeben wird. Nicht reagierende Clientgeräte oder Zertifizierungsstellen blockieren Registrierungen und belegen Plätze, bis das Problem behoben ist. Höhere Limits erhöhen die Arbeitsspeichernutzung. |
Nur erforderlich, wenn Sie in der Google Admin-Konsole ein generisches Profil verwenden (ein Profil, das eine generische CA-Verbindung nutzt). In der folgenden Konfiguration werden die Attribute des auszustellenden Zertifikats beschrieben.
| Schlüssel | Optional/Erforderlich | Werttyp |
|---|---|---|
| profile_config_id | Erforderlich |
String Die eindeutige Kennung der Konfiguration. Der Connector verwendet diese Konfiguration für Zertifikatprofile mit einer übereinstimmenden Konfigurationskennung für das Profil für die Zertifikatsbereitstellung. |
| subject_name | Erforderlich, wenn subject_alt_names nicht vorhanden ist |
struct
|
| subject_alt_names |
Erforderlich, falls subject_name nicht vorhanden ist. |
[]subject_alt_name Dies ist ein Objekt, das aus zwei erforderlichen Schlüsseln besteht. Der erste Schlüssel (type) kann einer der folgenden Werte sein: „USER_PRINCIPLE“, „RFC822“, „DNS“ oder „URI“. Der zweite Schlüssel ist name und sollte den entsprechenden String-Wert des ausgewählten Typs enthalten. Der Connector verwendet diesen Parameter, um das Tempo zu steuern, mit dem er seinen Traffic an den CA-Server sendet. Wird dieser Wert nicht gefunden, wird der Standardwert 2 verwendet. Hinweis: Die Werte subject_name und subject_alt_names können Platzhalter sein, die durch einen Wert ersetzt werden, der auf Nutzer- und Geräteattributen basiert, sofern verfügbar. Der Platzhalter kann einer der folgenden sein:
|
| key_usages | Mindestens ein Schlüsselverwendungszweck ist erforderlich. |
[]String Jede Verwendung gibt eine einzelne Schlüsselverwendung an. Mögliche Werte sind „KEY_ENCIPHERMENT“ und „SIGNING“. |
| extended_key_usages | Optional |
[]String Jede Verwendung gibt eine einzelne Schlüsselverwendung an. Mögliche Werte sind „CLIENT_AUTH“ und „SERVER_AUTH“. |
| template_name | Optional |
String Der Vorlagenname, der von der Zertifizierungsstelle angefordert werden soll. Der hier angegebene Name muss mit einem Vorlagennamen (nicht dem Anzeigenamen) in der Zertifizierungsstelle übereinstimmen. |
| signature_algorithm | Erforderlich |
String Der Signaturalgorithmus, mit dem das Clientgerät, das den privaten Schlüssel enthält, die Anfrage für die Zertifikatsunterzeichnung (Certificate Signing Request, CSR) signieren soll. Der hier angegebene Wert muss mit dem in der Admin-Konsole ausgewählten Schlüsseltyp kompatibel sein. Derzeit wird pro Schlüsseltyp nur ein Signaturalgorithmus angeboten. Mögliche Werte sind „RSA_SHA256“ und „ECDSA_SHA256“. |
Diese Konfiguration beschreibt die Parameter, die bei der Kommunikation mit der Zertifizierungsstelle verwendet werden.
| Schlüssel | Optional/Erforderlich | Werttyp |
|---|---|---|
| Typ | Erforderlich |
String Der Verbindungstyp für die Zertifizierungsstelle. Derzeit wird nur SCEP unterstützt. |
| ca_connection_config_id | Erforderlich |
String Die eindeutige Kennung der Konfiguration. Der Connector verwendet diese Konfiguration für die Kommunikation mit der Zertifizierungsstelle, wenn er einen Zertifikatsbereitstellungsprozess mit einer übereinstimmenden Konfigurationskennung für die Verbindung zur Zertifizierungsstelle empfängt. |
| ca_endpoint_url | Erforderlich |
String Die URL des CA-Servers, den der Connector aufruft, um ein Zertifikat anzufordern. |
| max_scep_queries_per_second | Optional |
float Der Connector verwendet diesen Parameter, um das Tempo zu steuern, mit dem er seinen Traffic an den CA-Server sendet. Wird dieser Wert nicht gefunden, wird der Standardwert 2 verwendet. |
| challenge_filename | Optional |
String Gibt die Datei mit der statischen Challenge für Zertifikatsanfragen von der Zertifizierungsstelle an. Das Dienstkonto des Connectors benötigt Leseberechtigungen für diese Datei. Pro CA kann nur eine der Optionen challenge_filename oder dynamic_challenge konfiguriert werden. |
| dynamic_challenge | Optional |
Dynamische Challenge-Konfiguration In einer einzelnen CA-Konfiguration kann nur eine der Optionen challenge_filename oder dynamic_challenge festgelegt werden. |
Diese Konfiguration beschreibt die Parameter, die beim Abrufen und Extrahieren einer dynamischen Challenge von einem externen Endpunkt verwendet werden sollen.
| Schlüssel | Optional/Erforderlich | Werttyp |
|---|---|---|
| challenge_endpoint_url | Erforderlich |
String Die URL des Endpunkts, den der Connector verwendet, um eine Challenge anzufordern. |
| number_of_challenge_fetchers | Optional |
int Die Anzahl der Fetcher, die gleichzeitig arbeiten, um Challenges vom Challenge-Endpunkt abzurufen. Diese Zahl sollte immer niedriger sein als die Anzahl der Challenges, die der Endpunkt ausgeben kann, bevor ihm die Challenges ausgehen. Der Standardwert ist 2. |
| retry_interval_minutes | Optional |
float Die Anzahl der Minuten, die jeder Challenge-Fetcher wartet, bevor er nach einem fehlgeschlagenen Versuch wieder versucht, eine neue Challenge abzurufen. Der Wert darf nicht unter 0,016 ~= 1 Sekunde liegen. Der Standardwert ist 1 Minute. |
| challenge_validity_minutes | Optional |
int Die Anzahl der Minuten, für die eine Challenge gültig ist. Der Standardwert ist 60. |
| challenge_page_parser | Optional |
Konfiguration des Challenge-Parsers Wenn keine Angaben gemacht werden, werden Standardwerte verwendet. Die Standardwerte basieren auf dem Verhalten der MS AD/CS-Admin-Seite. |
| Kerberos | Optional |
Kerberos-Konfiguration Wenn nicht angegeben, geht der Connector davon aus, dass beim Zugriff auf den Challenge-Endpunkt keine Authentifizierung erforderlich ist. |
Diese Konfiguration beschreibt die Optionen, die beim Parsen und Extrahieren der Challenge von der Seite verwendet werden, die vom Challenge-Endpunkt zurückgegeben wird.
| Schlüssel | Optional/Erforderlich | Werttyp |
|---|---|---|
| convert_html_to_utf8 | Optional |
boolean Das Flag, das angibt, ob das vom Challenge-Endpunkt abgerufene HTML in UTF-8 konvertiert werden soll. Der Standardwert ist true. |
| is_challenge_space_wrapped | Optional |
boolean Das Flag, das angibt, ob das Passwort in Leerzeichen eingeschlossen ist. Der Standardwert ist true. |
| challenge_xpath | Optional |
String Der XPath-Ausdruck, der auf die Challenge auf der HTML-Seite verweist, die vom Challenge-Endpunkt zurückgegeben wird. Der Standardwert ist „//*[@id="locPageFont"]/p[4]/b“. |
| out_of_challenges_xpath | Optional |
String Der XPath zu einem Element, das, wenn es gefunden wird, angibt, dass dem Challenge-Server die Registrierungspasswörter ausgegangen sind. Dieses Element sollte nur auf dieser bestimmten Fehlerseite angezeigt werden. Der Standardwert ist „//*[@id="locPageFont"]/ul/li[3]“. |
Hier wird die Konfiguration des Connectors für die Kerberos-basierte Kommunikation mit dem Challenge-Endpunkt beschrieben.
| Schlüssel | Optional/Erforderlich | Werttyp |
|---|---|---|
| config_filename | Erforderlich |
String Der Dateiname der Kerberos-Konfigurationsdatei. |
| keytab_filename | Erforderlich |
String Der Dateiname der keytab-Datei. |
| Bereich | Erforderlich |
String Der Bereichsname, den der Connector verwenden wird. Dieser sollte mit einem Bereichseintrag in der Kerberos-Konfigurationsdatei übereinstimmen. |
| Nutzername | Erforderlich |
String Der Name des Windows-Dienstkontos (SA, Service Account), das der Connector für die Kerberos-Authentifizierung verwendet. Dieser muss mit dem SA übereinstimmen, aus dem die keytab-Datei generiert wird. |
| server_spn | Erforderlich |
String Der Service-Principal-Name (SPN) des Challenge-Endpunkts, für den der Connector ein Dienstticket anfordern wird. Wird ein leerer String angegeben (“”), leitet der Connector den SPN von der Challenge-Endpunkt-URL ab. |
| enable_fast | Optional |
String Das Flag, das angibt, ob der Client den FAST-Algorithmus (Flexible Authentication Secure Tunneling) verwenden soll. Diese Option muss zuerst auf dem Servercomputer aktiviert werden. Der Standardwert ist false. |
Beispiele
Im Folgenden finden Sie einige Beispiele für die Konfigurationsobjekte, die vom Google Cloud Certificate Connector akzeptiert werden.
{
"adapter_configuration": {
"request_subscriptions": [
"projects/project-2/subscriptions/request-subscription-C02keao",
"projects/project-2/subscriptions/request-subscription-A2Oqeo"
],
"key_filename": "adapter_key.json"
},
"profile_configurations": [
{
"profile_config_id": "profile_1",
"subject_name": {
"common_name": "Common Name 1",
"organization": "Company 1",
"organizational_unit": ["Org Unit 1"]
},
"subject_alt_names": [
{
"type": "RFC822",
"name": "${USER_EMAIL}"
}
],
"key_usages": ["SIGNING", "KEY_ENCIPHERMENT"],
"template_name": "SCEPTemplate",
"signature_algorithm" : "RSA_SHA256"
},
{
"profile_config_id": "profile_2",
"subject_name": {
"common_name": "Common Name 2",
"organization": "Company 2",
"organizational_unit": ["Org Unit 2"]
},
"subject_alt_names": [
{
"type": "RFC822",
"name": "${USER_EMAIL}"
}
],
"key_usages": ["SIGNING", "KEY_ENCIPHERMENT"],
"template_name": "SCEPTemplate2",
"signature_algorithm" : "RSA_SHA256"
}
],
"ca_configurations": [
{
"type": "SCEP",
"ca_connection_config_id": "NDES_CA_CONFIG_1",
"ca_endpoint_url": "http://cert-test-ad-new/certsrv/mscep/",
"challenge_filename": "challenge-file.txt"
},
{
"type": "SCEP",
"ca_connection_config_id": "dynamic_ca_config",
"ca_endpoint_url": "https://dynamic-ca.example.org/certsrv/mscep/",
"dynamic_challenge": {
"challenge_endpoint_url": "http://dynamic-ca.example.org/certsrv/mscep_admin",
"challenge_validity_minutes": 30,
"kerberos": {
"config_filename": "kerberos.conf",
"keytab_filename": "scepsvc.keytab",
"realm": "EXAMPLE.ORG",
"username": "scepsvc",
"server_spn": ""
}
}
}
],
"legacy_configuration": {
"response_topic": "projects/mdm-certificate/topics/response-C02gxaaci",
"request_subscription": "projects/mdm-certificate/subscriptions/request-subscription-C02gxaaci"
}
} {
"adapter_configuration": {
"request_subscriptions": [
"projects/project-2/subscriptions/request-subscription-C02keao"
],
"key_filename": "adapter_key.json",
"instance_id": "instance_12345"
},
"ca_configurations": [
{
"type": "SCEP",
"ca_connection_config_id": "NDES_CA_CONFIG_1",
"ca_endpoint_url": "http://cert-test-ad-new/certsrv/mscep/"
}
]
} {
"legacy_configuration": {
"response_topic": "projects/mdm-certificate/topics/response-C02gxaaci",
"request_subscription": "projects/mdm-certificate/subscriptions/request-subscription-C02gxaaci"
}
}Bekannte Probleme und Beschränkungen
Zertifikate können nicht widerrufen werden, nachdem sie auf einem Gerät installiert wurden.
Google sowie zugehörige Marken und Logos sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen sind Marken der jeweiligen Unternehmen.