Asset

Identifica un elemento de forma única.

Un activo digital es una entidad en línea identificable y direccionable que generalmente proporciona algún servicio o contenido. Algunos ejemplos de activos son sitios web, apps para Android, feeds de Twitter y páginas de Google+.

Representación JSON
{
  // Union field, only one of the following:
  "web": {
    object(WebAsset)
  },
  "androidApp": {
    object(AndroidAppAsset)
  },
}
Nombre del campo Tipo Descripción
Campo de unión, solo una de las siguientes opciones:
web object(WebAsset) Configura si este es un recurso web.
androidApp object(AndroidAppAsset) Configura si se trata de un elemento de la app para Android.

Elemento web

Describe un elemento web.

Representación JSON
{
  "site": string,
}
Nombre del campo Tipo Descripción
site string

Los recursos web se identifican mediante una URL que contiene solo el esquema, el nombre de host y las partes de los puertos. El formato es

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

Los nombres de host deben estar completamente calificados y deben terminar en un solo punto (".").

Solo se permiten los esquemas "http" y "https".

Los números de puerto se proporcionan como número decimal y deben omitirse si se usan los números de puerto estándar: 80 para http y 443 para https.

Esta URL limitada se denomina "sitio". Todas las URL que comparten el mismo esquema, nombre de host y puerto se consideran parte del sitio y, por lo tanto, pertenecen al elemento web.

Ejemplo: El recurso con el sitio https://www.google.com contiene todas estas 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/

Sin embargo, no contiene las siguientes URL:

  • http://www.google.com/ (esquema incorrecto)
  • https://google.com/ (el nombre de host no coincide)
  • https://www.google.com:444/ (el puerto no coincide) OBLIGATORIO

Recurso de aplicación de Android

Describe un elemento de la app para Android.

Representación JSON
{
  "packageName": string,
  "certificate": {
    object(CertificateInfo)
  },
}
Nombre del campo Tipo Descripción
packageName string Los recursos de apps para Android se identifican de forma natural por su nombre de paquete de Java. Por ejemplo, la app de Google Maps utiliza el nombre de paquete com.google.android.apps.maps. REQUIRED
certificate object(CertificateInfo)

Debido a que no hay una aplicación global de la singularidad del nombre del paquete, también solicitamos un certificado de firma, que en combinación con el nombre del paquete identifica de forma exclusiva una aplicación.

Las claves de algunas apps se rotan, por lo que pueden firmarse con diferentes claves en el tiempo. Tratamos estos elementos como elementos independientes, ya que usamos (nombre del paquete, certificado) como el ID único. Esto no debería presentar problemas, ya que ambas versiones de la app realizan las mismas declaraciones o similares. Sin embargo, otros elementos que realizan declaraciones acerca de la aplicación deberán actualizarse cuando se rota una clave.

(Ten en cuenta que las sintaxis para publicar y consultar instrucciones contienen azúcar sintáctico a fin de que puedas especificar con facilidad apps que son conocidas por varios certificados). REQUIRED

Información del certificado

Describe un certificado X509.

Representación JSON
{
  "sha256Fingerprint": string,
}
Nombre del campo Tipo Descripción
sha256Fingerprint string

La huella digital SHA-265 en mayúsculas del certificado. Desde el certificado PEM, se puede adquirir de la siguiente manera:

$ 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 algo así:

$ 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

En este ejemplo, el contenido de este campo sería 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.

Si estas herramientas no están disponibles, puedes convertir el certificado PEM al formato DER, calcular el hash SHA-256 de esa string y representar el resultado como una string hexadecimal (es decir, representaciones hexadecimales en mayúsculas de cada octeto, separadas por dos puntos).