¿Cómo generamos un hash SHA256 codificado en base64 de SubjectPublicKeyInfo de un certificado X.509, para la fijación del certificado de Android N?
La documentación de la N Developer Preview para su configuración de seguridad de red ofrece estas instrucciones:
La fijación de certificados se realiza proporcionando un conjunto de certificados por hash de la clave pública (SubjectPublicKeyInfo del certificado X.509). Una cadena de certificados sólo es válida si la cadena de certificados contiene al menos una de las claves públicas fijadas.
- Aceptar certificados SSL autofirmados-> donde configurar TrustManager predeterminado
- ¿Cómo puedo validar un android.net.http.SsLCertificate con un X509TrustManager?
- Instalación del certificado autofirmado mediante programación
- Org.apache.http.client.ClientProtocolException
- Instalar certificado X509 mediante programación en mi caso
El XML que muestran está roto (falta una etiqueta de cierre), pero por lo demás sugiere que el hash es SHA256 y codificado base64:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config> <domain includeSubdomains="true">example.com</domain> <pin-set expiration="2018-01-01"> <pin digest="SHA-256">7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=</pin> <!-- backup pin --> <pin digest="SHA-256">fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=</pin> </domain-config> </network-security-config>
¿Cómo creamos tal hash?
He intentado el enfoque en esta esencia , pero openssl x509 -inform der -pubkey -noout
no está gustando mi archivo CRT. No puedo determinar fácilmente si el problema está en el archivo CRT, las instrucciones, mi versión de openssl
o algo más.
¿Alguien tiene una buena receta conocida para crear este hash?
- Agregar varios certificados SSL a Android KeyStore no funciona. (Desde el archivo de recursos)
- Android KeyStore: Error al generar certificado autofirmado, cadena de fecha no válida
- Android - ¿Hay una manera de obtener platform.pk8 y platform.x509.pem la ROM firmada con?
- cómo instalar el certificado de CA mediante programación en Android sin interacción del usuario
- ¿No pudo validar la firma del certificado?
- Android manual X509 validación de la cadena de certificados
- Agregar información de certificados de servidor a Trust Manager Android mediante programación
- ¿Cómo implementar la fijación de hojas / certificados intermedios en Android?
openssl x509 -in cert.crt -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
Puede ser necesario agregar -inform der
al primer comando si cert.crt está en forma DER en lugar de en forma PEM.