Los cuatro valores hash que se ven son hash SPKI. Mientras que la huella dactilar que ve cuando observa el certificado se calcula sobre todo el certificado, el hash SPKI solo se calcula sobre el SubjectPublicKeyInfo, es decir, la clave pública contenida en el certificado. Consulte Mozilla: HPKP para obtener más detalles, incluidas formas de calcular el hash SPKI utilizando herramientas comunes.
Aparte de eso, estos hash SPKI no especifican necesariamente el certificado de hoja (es decir, el que estaba viendo). En cambio, al menos uno de los hashes SPKI para un sitio debe coincidir con uno de los certificados en la cadena de certificados, es decir, desde la hoja hasta e incluyendo el certificado raíz de confianza local. Esto coincide con el comportamiento del encabezado HPKP que se describe en RFC 7469 de la siguiente manera:
... calcule las huellas dactilares SPKI para cada certificado en la cadena de certificados validados del host de Pinned ... verifique que el conjunto de estos SPKI
Las huellas digitales intersectan el conjunto de huellas digitales SPKI en ese anclaje
Metadatos de anclaje del host
Para realizar las comprobaciones manualmente, se podrían exportar todos los certificados desde el navegador, calcular el hash SPKI (vea el primer enlace sobre cómo hacerlo) y luego verificar si está en la lista de hashes SPKI precargados. Para la conexión llego a www.google.com, obtengo la siguiente cadena (tenga en cuenta que obtengo un certificado de hoja diferente):
[0] www.google.com
cert fingerprint: 27:4C:3B:05:9F:30:5C:C3:C7:EE:23:98:E5:33:21:EE:56:34:E0:40:96:09:1E:87:BE:F0:9D:AF:A7:44:39:12
SPKI hash: He1hxIXPpsnamgIS9IH1HC45P2yj45Py1fi0/JI6JBo=
[1] Google Internet Authority G3
cert fingerprint: BE:0C:CD:54:D4:CE:CD:A1:BD:5E:5D:9E:CC:85:A0:4C:2C:1F:93:A5:22:0D:77:FD:E8:8F:E9:AD:08:1F:64:1B
SPKI hash: f8NnEFZxQ4ExFOhSN7EiFWtiudZQVD2oY60uauV/n78=
[builtin] GlobalSign Root CA - R2
cert fingerprint: CA:42:DD:41:74:5F:D0:B8:1E:B9:02:36:2C:F9:D8:BF:71:9D:A1:BD:1B:1E:FC:94:6F:5B:4C:99:F4:2C:1B:9E
SPKI hash: iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0=
Como puede ver, el último hash SPKI de la CA raíz incorporada se interseca con los hashes SPKI precargados, lo que significa que la validación fue exitosa.
Si desea saber cuáles son los otros hash SPKI para usted, puede consultar código fuente de Chromium donde se muestra la siguiente definición para el conjunto de PIN utilizado para los dominios de Google:
"name": "google",
"static_spki_hashes": [
"GoogleBackup2048",
"GoogleG2",
"GeoTrustGlobal",
"GlobalSignRootCA_R2"
],
El último elemento GlobalSignRootCA_R2
es el que se encuentra en la cadena actual.