¿Qué usamos para la configuración de seguridad de red de Android N para un certificado auto-firmado?
Estoy tratando de probar todos los aspectos de la capacidad de configuración de seguridad de red de la N Developer Preview. Tengo la mayor parte del trabajo, pero estoy perplejo por el escenario de certificado autofirmado.
De acuerdo con los documentos , Android N debe estar contento con un archivo PEM o DER, como lo es para otros escenarios de validación de certificados. Sin embargo, no trabajo con los certificados auto-firmados mucho, y mis intentos para conseguir este funcionando funcionan en excepciones de la validación de la trayectoria del certificado.
- Android: conexión HTTPS (SSL) mediante HttpsURLConnection
- Android ssl: javax.net.ssl.SSLPeerUnverifiedException: Ningún certificado de igual (una vez más)
- Google Cloud Messaging muestra "notRegistered" al usar la aplicación distribuida de iOS
- Certificado de fijación en Android
- no se puede conectar al servidor utilizando BKS keystore
Para la prueba, estoy usando thin
como el servidor, corriendo en mi máquina de desarrollo, accesible por un emulador de N. El certificado autofirmado funciona para los navegadores de mi máquina de desarrollo, y si cambio a la ejecución de thin
sans SSL, las aplicaciones pueden llegar al servidor muy bien. Por lo tanto, no es un problema de conectividad.
He creado el certificado autofirmado usando las instrucciones de este sitio :
sudo openssl genrsa -out "/etc/[webserver]/ssl/example.key" 2048 sudo openssl req -new -key "/etc/[webserver]/ssl/example.key" \ -out "/etc/[webserver]/ssl/example.csr" sudo openssl x509 -req -days 365 -in "/etc/[webserver]/ssl/example.csr" \ -signkey "/etc/[webserver]/ssl/example.key" \ -out "/etc/[webserver]/ssl/example.crt"
De acuerdo con esta respuesta de desbordamiento de pila , el archivo example.crt
es un archivo PEM. En otras partes, veo instrucciones para crear un archivo "PEM combinado" . Sin embargo, he probado ambos, sin suerte.
En cuanto a la configuración de seguridad de red, he intentado tanto <domain-config>
como <debug-overrides>
. El último aspecto es:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <debug-overrides> <trust-anchors> <certificates src="@raw/selfsigned"/> </trust-anchors> </debug-overrides> </network-security-config>
Pero, obtengo el error de validación en cualquier caso.
¿Qué debemos poner exactamente como un archivo PEM o DER, como un recurso sin procesar, que hace que esto funcione?
- Advertencia SSL de google play
- "Flujo no representa una tienda de claves PKCS12" después de almacenar con una nueva contraseña en el dispositivo Android
- Android kSOAP2 Certificados SSL auto-firmados "Requisitos de seguridad no cumplidos - No hay cabecera de seguridad en el mensaje"
- Android Google Play Advertencia: Vulnerabilidad de procesador de errores SSL
- Pinzado de certificado SSL con Picasso
- ¿Cómo anular la lista de cifrado enviada al servidor por Android cuando se utiliza HttpsURLConnection?
- ¿Cómo hacer un HTTPS POST de Android?
- La manipulación SSL personalizada dejó de funcionar en Android 2.2 FroYo
Esto parece estar funcionando en N Developer Preview 2, utilizando el example.crt
generado por los scripts de openssl
mostrados en la pregunta. Por el momento, voy a asumir que hubo un cambio en N Developer Preview 2 en comparación con N Developer Preview 1 que explica el cambio.