Cómo instalar el certificado digital crt y p12 en un teléfono Android
Al hacer clic en "Instalar certificado" en la configuración de Wi-Fi, interfaz avanzada o hacer clic en "Instalar certificado" en la interfaz de CredentialStorage en la interfaz de seguridad de Configuración. La clase CertInstallerMain en el paquete com.android.certinstaller recibirá la intención Credentials.INSTALL_AS_USER_ACTION enviada por Configuración.
Luego, la clase CertInstallerMain comienza a crear un hilo y comienza a ejecutarse. Durante la ejecución, debido a que recibió la intención Credentials.INSTALL_AS_USER_ACTION, CertInstallerMain comienza a determinar si la tarjeta SD existe. Aquí, enviamos los certificados a la tarjeta SD. La tarjeta SD ciertamente existe. En este caso, la clase CertInstallerMain comienza a leer todos los archivos de certificado en la tarjeta a través de la clase CertFile que hereda. El proceso de lectura de certificados de la clase CertFile es muy simple: se configura como FileFilter. En el método de aceptación, CertFile solo recibe archivos con el sufijo Credentials.EXTENSION_CRT, Credentials.EXTENSION_P12, Credentials.EXTENSION_CER, Credentials.EXTENSION_PFX. Es decir, actualmente Android solo admite certificados digitales con sufijos crt, p12, cer y pfx.
Luego, cuando solo haya un certificado en la tarjeta SD, aparecerá un cuadro de solicitud de instalación. Cuando haya varios certificados en la tarjeta SD, aparecerá una lista de certificados. Esta lista la mantiene la clase CertFileList Cuando hace clic en un certificado, se llamará al método installFromFile y aparecerá un cuadro de diálogo como cuando solo hay un certificado en la tarjeta SD. El método de instalación de la clase CertFile notificará a CertInstaller para que sea responsable de la instalación del certificado.
La clase CertFile clasifica los certificados p12 y otros certificados. Si es un certificado p12, le daré un cuadro de diálogo y estará bien después de ingresar la contraseña. Aquí, también utilicé el certificado CA requerido por WIFI WAP para realizar pruebas. Para el certificado de CA, cuando hace clic en el botón correspondiente a "Confirmar" en el cuadro de diálogo emergente, se creará una intención com.android.credentials.INSTALL a través de la clase CredentialHelper y la enviará a com.android.settings. Clase de almacenamiento de credenciales. Cuando se inicia la clase CertInstaller, creará directamente una clase CredentialHelper. La clase CredentialHelper clasificará directamente el certificado instalado en CA y USUARIO, de modo que cuando se haga clic en "Confirmar", CredentialHelper pasará la información del certificado de CA a través de Credentials.EXTRA_CA_CERTIFICATES_NAME y Credentials. .EXTRA_CA_CERTIFICATES_DATA. Póngalo en la intención de com.android.credentials.INSTALL.
Finalmente, Configuración recibe esta intención y guarda la información del certificado de CA en KeyStore a través del método installIfAvailable(). Luego, la configuración puede leer el certificado guardado a través de KeyStore.