Asset

Kennzeichnet einen Inhalt eindeutig.

Ein digitaler Vermögenswert ist ein identifizierbares und adressierbares Online-Unternehmen, das in der Regel einen bestimmten Dienst oder Inhalt anbietet. Beispiele für Assets sind Websites, Android-Apps, Twitter-Feeds und Google+ Seiten.

JSON-Darstellung
{
  // Union field, only one of the following:
  "web": {
    object(WebAsset)
  },
  "androidApp": {
    object(AndroidAppAsset)
  },
}
Feldname Typ Beschreibung
Union-Feld, nur eines der folgenden Werte:
web object(WebAsset) Wird festgelegt, wenn es sich um ein Web-Asset handelt.
androidApp object(AndroidAppAsset) Legen Sie fest, ob es sich um ein Android-App-Asset handelt.

WebAsset

Beschreibt ein Web-Asset.

JSON-Darstellung
{
  "site": string,
}
Feldname Typ Beschreibung
site string

Web-Assets werden anhand einer URL identifiziert, die nur das Schema, den Hostnamen und die Portteile enthält. Das Format ist

http[s]://<hostname>[:<port>]

Hostnamen müssen voll qualifiziert sein: Sie müssen auf einen einzelnen Punkt („.“) enden.

Derzeit sind nur die Schemas "http" und "https" zulässig.

Portnummern werden als Dezimalzahl angegeben und müssen weggelassen werden, wenn die standardmäßigen Portnummern verwendet werden: 80 für HTTP und 443 für HTTPS.

Diese eingeschränkte URL bezeichnen wir als „Website“. Alle URLs, die das gleiche Schema, den gleichen Hostnamen und den gleichen Port haben, werden als Teil der Website angesehen und gehören daher zum Web-Asset.

Beispiel: Das Asset mit der Website https://www.google.com enthält alle diese URLs:

  • https://www.google.com/
  • https://www.google.com:443/
  • https://www.google.com/foo
  • https://www.google.com/foo?bar
  • https://www.google.com/foo#bar
  • https://user@password:www.google.com/

Folgende URLs sind jedoch nicht enthalten:

  • http://www.google.com/ (falsches Schema)
  • https://google.com/ (Hostname stimmt nicht überein)
  • https://www.google.com:444/ (Port stimmt nicht überein) ERFORDERLICH

AndroidAppAsset

Beschreibt ein Android-App-Asset.

JSON-Darstellung
{
  "packageName": string,
  "certificate": {
    object(CertificateInfo)
  },
}
Feldname Typ Beschreibung
packageName string Android-App-Assets sind an ihrem Java-Paketnamen erkennbar. Die Google Maps App verwendet beispielsweise den Paketnamen com.google.android.apps.maps. ERFORDERLICH
certificate object(CertificateInfo)

Da die Eindeutigkeit von Paketnamen weltweit nicht erzwungen wird, benötigen wir außerdem ein Signaturzertifikat, das in Verbindung mit dem Paketnamen eine App eindeutig identifiziert.

Die Signaturschlüssel einiger Apps werden rotiert, sodass sie im Laufe der Zeit möglicherweise mit anderen Schlüsseln signiert werden. Wir behandeln sie als separate Assets, da wir (Paketname, Zertifikat) als eindeutige ID verwenden. Dies sollte normalerweise keine Probleme verursachen, da beide Versionen der App die gleichen oder ähnliche Aussagen machen. Andere Assets mit Aussagen zur App müssen jedoch aktualisiert werden, wenn ein Schlüssel rotiert wird.

Beachten Sie, dass die Syntax für das Veröffentlichen und Abfragen von Anweisungen syntaktischen Zucker enthält, damit Sie auf einfache Weise Anwendungen angeben können, die durch mehrere Zertifikate bekannt sind. ERFORDERLICH

CertificateInfo

Beschreibt ein X509-Zertifikat.

JSON-Darstellung
{
  "sha256Fingerprint": string,
}
Feldname Typ Beschreibung
sha256Fingerprint string

Der SHA-265-Fingerabdruck des Zertifikats in Großbuchstaben. So erhalten Sie das PEM-Zertifikat:

$ keytool -printcert -file $CERTFILE | grep SHA256:
SHA256: 14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83: \
    42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

oder so:

$ openssl x509 -in $CERTFILE -noout -fingerprint -sha256
SHA256 Fingerprint=14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64: \
    16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5

In diesem Beispiel lautet der Inhalt dieses Felds 14:6D:E9:83:C5:73: 06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF: 44:E5.

Wenn Ihnen diese Tools nicht zur Verfügung stehen, können Sie das PEM-Zertifikat in das DER-Format konvertieren, den SHA-256-Hash dieses Strings berechnen und das Ergebnis als Hexadezimalstring darstellen (d. h. als hexadezimale Großschreibung jedes Oktetts, getrennt durch Doppelpunkte).