我正在尝试使用以下代码以编程方式在Android上安装客户端证书:
Intent clientCertInstall = KeyChain.createInstallIntent();
clientCertInstall.putExtra(KeyChain.EXTRA_PKCS12, clientCert);
clientCertInstall.putExtra(KeyChain.EXTRA_NAME, "Client Cert");
MyActivity.this.startActivityForResult(clientCertInstall, REGISTER_CLIENT_CERT);
当安装活动启动时,android会要求用户输入证书的密码(虽然没有密码,只需单击“确定”即可)
更重要的是,点击确定后,android要求用户输入证书的名称,尽管我在“KeyChain.EXTRA_NAME”参数中给了他一个名字。
这种行为让我的用户感到烦恼,他们不了解证书,只是想让它在没有对话框的情况下自动安装,我该如何实现?甚至避免一个对话也会非常有用。
谢谢,
答案 0 :(得分:0)
这是"by design"。允许应用程序在未经用户批准的情况下安装证书将会对SSL保护的通信渠道(如网上银行)造成中间人攻击。也就是说,对话框没有告诉你任何内容,用户无论如何都会毫无疑问地按下OK。