Asset

Identifica in modo univoco una risorsa.

Un asset digitale è un'entità online identificabile e indirizzabile che in genere fornisce alcuni servizi o contenuti. Esempi di asset sono siti web, app per Android, feed di Twitter e pagine Plus.

Rappresentazione JSON
{
  // Union field, only one of the following:
  "web": {
    object(WebAsset)
  },
  "androidApp": {
    object(AndroidAppAsset)
  },
}
Nome campo Tipo Descrizione
Union, solo uno dei seguenti:
web object(WebAsset) Imposta questo valore se si tratta di un asset web.
androidApp object(AndroidAppAsset) Imposta questo valore se si tratta di un asset per app Android.

WebAsset

Descrive un asset web.

Rappresentazione JSON
{
  "site": string,
}
Nome campo Tipo Descrizione
site string

Gli asset web sono identificati da un URL che contiene solo le parti schema, nome host e porta. Il formato è

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

I nomi host devono essere completi: devono terminare con un singolo punto (".").

Al momento sono consentiti solo gli schemi "http" e "https".

I numeri di porta sono forniti come numeri decimali e devono essere omessi se vengono utilizzati i numeri di porta standard: 80 per http e 443 per https.

Questo URL limitato viene chiamato "sito". Tutti gli URL che condividono lo stesso schema, nome host e porta sono considerati parte del sito e quindi appartengono all'asset web.

Esempio: l'asset con il sito https://www.google.com contiene tutti i seguenti URL:

  • 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/

Tuttavia, non contiene i seguenti URL:

  • http://www.google.com/ (schema errato)
  • https://google.com/ (il nome host non corrisponde)
  • https://www.google.com:444/ (porta non corrispondente) REQUIRED

AndroidAppAsset

Descrive un asset per app per Android.

Rappresentazione JSON
{
  "packageName": string,
  "certificate": {
    object(CertificateInfo)
  },
}
Nome campo Tipo Descrizione
packageName string Gli asset per app per Android sono naturalmente identificati dal nome del pacchetto Java. Ad esempio, l'app Google Maps utilizza il nome del pacchetto com.google.android.apps.maps. REQUIRED
certificate object(CertificateInfo)

Poiché non è prevista un'applicazione globale dell'univocità dei nomi dei pacchetti, è necessario anche un certificato di firma, che, in combinazione con il nome del pacchetto, identifica in modo univoco un'app.

Le chiavi di firma di alcune app vengono ruotate, quindi nel tempo potrebbero essere firmate da chiavi diverse. Vengono considerati risorse distinte, in quanto utilizziamo (nome del pacchetto, certificato) come ID univoco. Normalmente questo non dovrebbe rappresentare alcun problema, in quanto entrambe le versioni dell'app riporteranno affermazioni uguali o simili. Tuttavia, le altre risorse che fanno dichiarazioni sull'app dovranno essere aggiornate quando una chiave viene ruotata.

Tieni presente che le sintassi per la pubblicazione e l'esecuzione di query per le istruzioni contengono zucchero sintattico per consentirti di specificare facilmente le app note da più certificati. REQUIRED

CertificateInfo

Descrive un certificato X509.

Rappresentazione JSON
{
  "sha256Fingerprint": string,
}
Nome campo Tipo Descrizione
sha256Fingerprint string

L'impronta SHA-265 maiuscola del certificato. Dal certificato PEM, può essere acquisito nel seguente modo:

$ 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

o in questo modo:

$ 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 questo esempio, il contenuto di questo campo è 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.

Se questi strumenti non sono disponibili, puoi convertire il certificato PEM nel formato DER, calcolare l'hash SHA-256 di quella stringa e rappresentare il risultato come una stringa esadecimale (ovvero, rappresentazioni esadecimali maiuscole di ogni ottetto, separate da due punti).