我想为Android开发一个自己的API,该API要求“签名”保护级别,并且可以供“我的”应用程序访问。

想法如下:


将我自己的证书“安装”到系统证书存储中
用我自己的证书签署“受信任的”应用程序


结果,在任何应用程序向我的API系统发出请求的过程中,都会检查此应用程序是否已使用适当的证书签名。如果我的证书已安装到Android中,则应该没问题。

我将对该方法进行原型设计,但是如果有明显的事情可以阻止我执行此操作-请让我知道。

问题:

如何将自己的证书安装到系统证书存储中(假设我们将自己构建Android并可以在合理的范围内修改系统)?

非常感谢你。

附言我对Java / Android开发不是很熟悉,所以请不要介意您是否发现一些奇怪的东西。

更新:

正如我在给zeetoobiker的答案的评论中所写的那样,如果我使用自己的证书对API进行签名,则我的所有应用程序都可以访问该API(由我的证书签名),但它没有任何系统权限。而且,我不希望我的所有“客户”都浏览到“ realmb.com/droidCert/”网站。相反,我希望制造商将我的证书添加到OS中,现在我正在努力进行概念验证。

最佳答案

我认为您不需要安装证书。

permission docs进行签名:


  仅当使用与声明许可的应用程序相同的证书对发出请求的应用程序进行签名时,系统才会授予许可。如果证书匹配,则系统会自动授予权限,而无需通知用户或征求用户的明确批准。


这意味着这是您用来签署重要应用程序的证书(不是任何已安装的证书)-如果您使用相同的证书签署App 1和App 2,则它将具有权限。如果使用其他证书签名的App 3尝试访问API,则它将获得无权限例外。

根据文档(我必须承认,尽管我正在寻找一些我的应用程序,但我没有做过),它应该可以在香草Android上运行,而无需任何必要的自定义/访问设备/根目录。

如果您确实需要安装根证书,则this可能会有所帮助,但我认为您没有达到您指定的目的。

关于java - 如何将自己的证书安装到系统证书存储中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8041328/

10-11 22:43
查看更多