Recientemente, he trabajado en la configuración de la fijación de certificados para nuestra aplicación móvil. Estoy usando el hash de la información de clave pública del sujeto (SPKI) para el anclaje. Ahora, tenía la impresión de que SPKI será el mismo si crearé otro certificado desde la misma clave privada. Así que lo probé: creé una clave privada usando SSL y una CSR coincidente. Ahora, firmé este CSR dos veces usando diferentes claves privadas, y para mi sorpresa, el SPKI (y el pin hash) no era el mismo. ¿Es ese el comportamiento esperado? ¿O es algo que me falta? ¿Está también firmada la PKI en el certificado?
Esos son los comandos openssl que he usado:
Para generar un CSR:
openssl req -new -sha256 -key private.key -out private.csr
Para generar la clave privada de CA:
openssl genrsa -des3 -out ca.key 2048
Para firmar el CSR:
openssl x509 -req -days 365 -in private.csr -signkey ca.key -out test.crt
Este es el comienzo del SPKI desde el primer certificado:
BA 86 D3 0E E8 CC F3 C0 A2 B9 1E 8B BA 45 80 11 EF 13 CB 4F 76 CE A8 6A
Y este es el comienzo del SPKI a partir del segundo certificado:
CC 96 B3 AB EA 0D FC 66 91 D8 E2 50 2B A7 8F 63 91 4C 7E 10 A3 48 1E 9F
Para calcular los hashes, utilicé la forma más sencilla: importé los certificados al llavero mac y los abrí:
Tambiénuséeste