Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将自己的证书安装到系统证书存储中?_Java_Android_Security - Fatal编程技术网

Java 如何将自己的证书安装到系统证书存储中?

Java 如何将自己的证书安装到系统证书存储中?,java,android,security,Java,Android,Security,我想为Android开发一个自己的API,该API将要求“签名”保护级别,并可用于“我的”应用程序 想法如下: 将我自己的证书“安装”到系统证书存储中 用我自己的证书签署“受信任”的应用程序 因此,在任何应用程序向我的API系统发出请求的过程中,系统都会检查此应用程序是否使用了适当的证书进行签名。如果我的证书安装到Android中,一切都会正常 我将对这种方法进行原型化,但如果有什么明显的东西可以阻止我这样做,请让我知道 问题: 如何将自己的证书安装到系统证书存储中(假设我们将自己构建Andro

我想为Android开发一个自己的API,该API将要求“签名”保护级别,并可用于“我的”应用程序

想法如下:

  • 将我自己的证书“安装”到系统证书存储中
  • 用我自己的证书签署“受信任”的应用程序
  • 因此,在任何应用程序向我的API系统发出请求的过程中,系统都会检查此应用程序是否使用了适当的证书进行签名。如果我的证书安装到Android中,一切都会正常

    我将对这种方法进行原型化,但如果有什么明显的东西可以阻止我这样做,请让我知道

    问题

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

    多谢各位

    另外,我对Java/Android开发不是很熟悉,所以如果你看到一些奇怪的东西,请不要介意

    更新:


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

    我认为您不需要安装证书

    签字人姓名:

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

    这意味着你用来签署应用的证书才是重要的(而不是任何已安装的证书)-如果你用相同的证书签署应用1和应用2,那么它将拥有权限。如果使用不同证书签名的应用程序3尝试访问API,则会出现无权限异常

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


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

    我认为您不需要安装证书

    签字人姓名:

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

    这意味着你用来签署应用的证书才是重要的(而不是任何已安装的证书)-如果你用相同的证书签署应用1和应用2,那么它将拥有权限。如果使用不同证书签名的应用程序3尝试访问API,则会出现无权限异常

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


    如果您真的需要安装根证书,可能会有所帮助,但我认为您无法实现您的既定目标。

    您好Zeetoobiker,感谢您的反馈。我需要将自己的证书安装到系统存储中的原因是我希望我的API具有一些系统权限。如果我用自己的证书对API进行签名,那么我的所有应用程序都可以访问它(由我的证书签名),但它没有任何系统权限。我不想让我所有的“客户”都浏览到“”网站。相反,我希望制造商将我的证书添加到操作系统中,现在我正在进行概念验证。请告知您是否知道如何将根证书安装到操作系统中(在编译阶段)。非常感谢你!抱歉,我没有特别建议您访问该网站,但该网站(同时也提供了一种实现方法)显示了您可以如何添加它-诚然,这意味着将其提供给系统浏览器进行下载和安装(可能来自设备本身)。作为API,您指的是小型,向其他应用程序公开API的非可视接口应用程序?我想你会的-如果你是指其他的,那么你能再解释一下吗?因为如果你的意思是API应用程序可以拥有你想要的任何系统权限,你只需要在清单中请求。我的API(最好称为库,非可视应用程序)应该可以访问其他系统应用程序,如谷歌电子邮件、日历等。是的,我知道我可以通过清单为我的库请求系统级权限。我还需要用系统证书签署我的库(作为系统的一部分,这是可以的)。但我还需要两件事:1)我的应用程序不应该由系统证书签名(这就是为什么我要将自己的证书安装到系统存储中);2) 只有通过我的证书签名的应用程序才能访问我的库。嗨,Zeetoobiker,谢谢你的反馈。我需要将自己的证书安装到系统存储中的原因是我希望我的API具有一些系统权限。如果我用自己的证书对API进行签名,那么我的所有应用程序都可以访问它(由我的证书签名),但它没有任何系统权限。我不想让我所有的“客户”都浏览到“”网站。相反,我希望制造商将我的证书添加到操作系统中,现在我正在进行概念验证。请告知您是否知道如何将根证书安装到操作系统中(在编译阶段)。