how to install CA certificate programmatically on Android without user interaction

You can only install certificates silently if you have system privileges. Showing up a confirmation dialog is intentional, since trusting certificates can have serious consequences — Android could happily open phishing sites without a warning, etc. That said, the dialog in ICS/JB is pretty bad — it doesn’t tell you what certificate you are installing and who issued it, just that it’s a CA certificate, which is kind of obvious.

So, either use the public KeyChain API and use startActivity() to get the confirmation dialog, or pre-provision devices before handling them to users.

Update: In Android 4.4, DevicePolicyManager has a hidden API (installCaCert) that allows you to install certificates silently. You need the MANAGE_CA_CERTIFICATES permission, which is signature|system, so still not doable for user-installed apps.

Leave a Comment