保护Web服务,使其只能由特定的Android应用程序调用

保护Web服务,使其只能由特定的Android应用程序调用,第1张

概述我们的网络服务只能由特定的 Android应用调用.有什么解决方案可以解决这个问题? 要求是根本不使用身份验证. 如果它只是您的客户端和服务器,您可以(而且应该)使用SSL而无需购买任何东西.您可以控制服务器和客户端,因此每个应该只信任一个证书,一个属于另一个证书,并且您不需要CA来实现此目的. 这是高级方法.创建自签名服务器SSL证书并在Web服务器上部署.您可以使用Android SDK附带的 我们的网络服务只能由特定的 Android应用调用.有什么解决方案可以解决这个问题?

要求是根本不使用身份验证.

解决方法 如果它只是您的客户端和服务器,您可以(而且应该)使用SSL而无需购买任何东西.您可以控制服务器和客户端,因此每个应该只信任一个证书,一个属于另一个证书,并且您不需要CA来实现此目的.

这是高级方法.创建自签名服务器SSL证书并在Web服务器上部署.您可以使用AndroID SDK附带的keytool来实现此目的.然后创建一个自签名客户端,并将其作为资源在应用程序中包含的自定义密钥库中部署到您的应用程序中(keytool也会生成它).将服务器配置为要求客户端SSL身份验证,并仅接受您生成的客户端证书.将客户端配置为使用该客户端证书来标识自身,并且只接受您在服务器上安装的那个服务器端证书.

对此进行逐步解决的答案远远超过此处的保证.我建议分阶段执行此 *** 作,因为网络上有关于如何在AndroID(服务器端和客户端)处理自签名SSL证书的资源.在我的书“Application Security for the Android Platform”中也有一个完整的演练,由O’Reilly出版.

您通常会将该证书/私钥存储在某种类型的密钥库中(如果您使用的是AndroID,则为KeyStore),并且该密钥库将被加密.该加密基于密码,因此您需要(1)将密码存储在客户端的某个位置,或者(2)在用户启动客户端应用程序时询问用户密码.你需要做什么取决于你的用例.如果(2)是可接受的,那么您已经保护您的凭证免受逆向工程,因为它将被加密并且密码不会存储在任何地方(但用户需要每次都输入它).如果您执行(1),那么有人将能够对您的客户端进行反向工程,获取密码,获取密钥库,解密私钥和证书,以及创建另一个能够连接到服务器的客户端.

你无能为力,以防止这种情况发生;你可以更难以对代码进行逆向工程(通过混淆等),但你不能让它变得不可能.您需要确定使用这些方法尝试减轻的风险是什么,以及为减轻风险需要做多少工作.

总结

以上是内存溢出为你收集整理的保护Web服务,使其只能由特定的Android应用程序调用全部内容,希望文章能够帮你解决保护Web服务,使其只能由特定的Android应用程序调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1134712.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存