这是情况:
我正在开发一个应用程序,允许自动管理网络连接。用户可以通过应用程序配置WiFi / VPN配置文件,并且应用程序将管理他们与这些配置文件的连接。
这一切都相当简单(好吧,VPN需要一些反射技巧),除了当我到达需要证书身份验证的网络连接管理点时。问题在于,这些网络大多使用自签名证书,而根据我在Android上遇到的情况,这些证书似乎需要从根证书存储库中访问。我尝试创建一个私有应用程序密钥库,并在那里安装证书,但据我所知,Android的WiFi和VPN部分无法访问此内容。
是否有一种方法可以在应用程序密钥库中安装所选证书,基于此密钥库创建配置文件,然后将已完成的配置文件发送到Android WiFi / VPN管理器以允许预配置的连接?
这似乎应该是可能的,但我还没有足够聪明地使其工作。
更新:
当我尝试创建WiFi和VPN配置时,我已经尝试引用本地应用程序密钥库中安装的证书。似乎在将配置推送到操作系统后无法找到它们。据我理解,一旦安装了证书,它就成为通用密钥库的一部分,无论是在应用程序级别还是在操作系统级别。
我必须保持对证书的访问权限,因此无法将它们推送到SD卡。即使我将它们推送到SD卡,我也无法要求用户手动安装证书,我需要在后台处理以简化配置。我一直在挖掘源代码,但没有找到任何明显的解决方案,但我希望有人之前已经遇到过这个问题,而我只是错过了它。
感谢您的帮助!
更新2:
对于仍然对如何做到这一点感兴趣的人,这里是您需要查看的软件包/类。
com.android.certinstaller.* android.security.Credentials
通过一些挖掘,您可以找到构造意图以安装所需证书的适当方法。
另外,作为侧面说明,如果设备上尚未设置凭据存储密码,则您发出的初始意图以安装证书将仅提示用户提供凭据存储密码。证书将不会安装。可能有一种方法可以解决这个问题,但我还没有找到它。
我正在开发一个应用程序,允许自动管理网络连接。用户可以通过应用程序配置WiFi / VPN配置文件,并且应用程序将管理他们与这些配置文件的连接。
这一切都相当简单(好吧,VPN需要一些反射技巧),除了当我到达需要证书身份验证的网络连接管理点时。问题在于,这些网络大多使用自签名证书,而根据我在Android上遇到的情况,这些证书似乎需要从根证书存储库中访问。我尝试创建一个私有应用程序密钥库,并在那里安装证书,但据我所知,Android的WiFi和VPN部分无法访问此内容。
是否有一种方法可以在应用程序密钥库中安装所选证书,基于此密钥库创建配置文件,然后将已完成的配置文件发送到Android WiFi / VPN管理器以允许预配置的连接?
这似乎应该是可能的,但我还没有足够聪明地使其工作。
更新:
当我尝试创建WiFi和VPN配置时,我已经尝试引用本地应用程序密钥库中安装的证书。似乎在将配置推送到操作系统后无法找到它们。据我理解,一旦安装了证书,它就成为通用密钥库的一部分,无论是在应用程序级别还是在操作系统级别。
我必须保持对证书的访问权限,因此无法将它们推送到SD卡。即使我将它们推送到SD卡,我也无法要求用户手动安装证书,我需要在后台处理以简化配置。我一直在挖掘源代码,但没有找到任何明显的解决方案,但我希望有人之前已经遇到过这个问题,而我只是错过了它。
感谢您的帮助!
更新2:
对于仍然对如何做到这一点感兴趣的人,这里是您需要查看的软件包/类。
com.android.certinstaller.* android.security.Credentials
通过一些挖掘,您可以找到构造意图以安装所需证书的适当方法。
另外,作为侧面说明,如果设备上尚未设置凭据存储密码,则您发出的初始意图以安装证书将仅提示用户提供凭据存储密码。证书将不会安装。可能有一种方法可以解决这个问题,但我还没有找到它。