Esta página me indicó la dirección correcta.
Android 11 sólo puede instalar certificados de CA root proporcionados por el usuario para contener el X.509v3 CA:true
que sospecho que no era necesario antes por alguna razón, y siguió funcionando después de la actualización hasta que intenté instalar una nueva porque, presumiblemente, la bandera no es necesaria para validar una cadena de confianza TLS.
El siguiente comando puede comprobar si un certificado contiene esa bandera (sustituya el formato de entrada y el nombre del archivo por el que esté utilizando).
$ openssl x509 -inform der -in cacert.crt -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
....
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = **, O = ***
...
X509v3 extensions:
X509v3 Basic Constraints:
CA:TRUE
...
Si CA:TRUE
no está presente en X509x3 Restricciones básicas su certificado Root probablemente no va a funcionar en Android 11.
Para generar un simple certificado CA Root autofirmado para Android 11, estos pasos mínimos me funcionaron, y pueden ser personalizados para su propio certificado:
$ echo 'basicConstraints=CA:true' > android_options.txt
$ openssl genrsa -out priv_and_pub.key 2048
$ openssl req -new -days 3650 -key priv_and_pub.key -out CA.pem
$ openssl x509 -req -days 3650 -in CA.pem -signkey priv_and_pub.key -extfile ./android_options.txt -out CA.crt
$ openssl x509 -inform PEM -outform DER -in CA.crt -out CA.der.crt
El CA.der.crt
o CA.crt
se pueden instalar en Ajustes > Seguridad > Cifrado y credenciales > Instalar un certificado .
Una vez instalado, aparece propiamente en el Certificados de usuario y todas las aplicaciones que intenten conectarse a sitios que utilicen esa CA Root tendrán éxito.
Esta respuesta parece basarse en los mismos fundamentos, pero es mucho más completo y probablemente funcionará en más plataformas, pero el anterior debería ser un buen ejemplo de funcionamiento mínimo.
0 votos
¿Sabes que instalar un certificado de CA root de usuario es inútil, ya que las aplicaciones no confían en esta CA por defecto?
0 votos
Ah, ¿eso cambió en Android 11? Solía ser de esta manera en las versiones anteriores, ¿me puede apuntar a los documentos para eso?
0 votos
No, no es algo nuevo. Todas las aplicaciones orientadas a Android 7+ (nivel de API 24+) ignoran por defecto todos los certificados CA de usuario.
0 votos
@Robert, Esto también es útil en el caso de establecer una red WiFi con seguridad WPA-Enterprise vía EAP-TLS. Sin esta bandera (CA:True) no es posible instalar, a continuación, seleccione el certificado de CA en las propiedades de HotSpot.
0 votos
@A.Petrov Establecer una conexión a una Wifi WPA-Enterprise lo hace el sistema Android no una aplicación. Por lo tanto lo que escribí sigue siendo cierto: instalar un certificado de usuario es inútil para las apps.
0 votos
@Robert Root tema no se señala cuál es el objetivo del certificado CA. El sistema Android no puede instalar el certificado CA sin un atributo mencionado en la respuesta del tema.