My objective: Create an EAP WiFi configuration - including the CA Certificate - in Android programmitcally.
Problem: How do I install a CA Certificate programmatically (and then reference that certificate in the EAP WiFi configuration)?
I found a very useful link already that allows me to create and save EAP WiFi configurations here: How to programmatically create and read WEP/EAP WiFi configurations in Android?
However this assumes that you have already installed the CA Certificate on the device. I would like to install the certificate within my app - either from the resources in the app, or sent from a server.
Is this even possible? (Rooting is not an option in this case.) If so, how?
Additional info...
I also found a way to add a certificate to a KeyStore: https://stackoverflow.com/a/4490543/1172101
However this is used specifically for creating a secure socket and connecting via HTTPS. I want to use the certificate for WiFi.
Unfortunately, I have yet to find a way to install a CA Certificate programmatically - from within the app.
However, it is possible to install a certificate via the Web browser in Android. Thus, the solution (for now) is to: Launch an intent to open a URL in the Web browser that goes directly to the CA certificate.
This works but there are some challenges:
- The user must name the certificate. This is a challenge because we are adding the WiFi configuration programmitically. Thus we have to ask the user to give the certificate the same name.
- The user must enter a password. If they don't have a password set up, the user will create one and enter it twice. If they have set a security password, the user will have to remember that same password and enter it.
- Assuming the user successfully completes these steps, he is left hanging in the browser.
This leads to a few questions:
- From my app, is there a way to force a name for the certificate that the user installs via the browser?
- From my app, is there any way to know when the certificate installation has completed and then give focus back to my app?
Just let me know if you need any clarification.