android - 在自定义 API 调用上验证签名证书指纹

标签 android security authentication ssl certificate

我确实有一个困扰我的问题。每当您使用像 Firebase 数据库这样的 Google API 时,您都会在创建时告诉端点允许使用它的应用程序包名称以及用于签署应用程序的证书的指纹。 现在,当您尝试从另一个应用程序(不同的包名称)使用 API 或更改签名证书(例如,从调试切换到发布)时,Google 将拒绝调用。

这让我想到了。 Google 如何在运行时知道签名证书指纹?

我们能否使用相同的机制通过检查指纹来保护自定义 API 端点? 获取包名很容易,没有什么可依赖的,但我对证书指纹很感兴趣。

我的目标是通过参数散列 + salt 和可能的时间戳以外的方式对服务器上的请求进行身份验证。

最佳答案

我对该主题进行了更多研究。事实证明,您可以像这样在运行时访问签名证书:

Signature[] sigs = context.getPackageManager().getPackageInfo(context.getPackageName(),PackageManager.GET_SIGNATURES).signatures;
for (Signature sig : sigs) {
    Log.i("App", "Signature : " + sig.hashCode());
}

found here

关于android - 在自定义 API 调用上验证签名证书指纹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42627962/

相关文章:

android - 如何更新我在 ListView 中单击的行旁边的所有行?

asp.net - ASP.NET 兼容模式下的 WCF 服务 - 传递用户名/密码的最简单方法是什么

security - 保护集群上的 Spark 作业

authentication - github(twitter、stripe & co)是否使用 oauth 进行自己的登录?

git - 通过 HTTP 和 SSL 验证的 Git 克隆问题

Php/Mysql 如何用帖子插入当前用户

android 在 Eclipse 图形布局中添加设备

java - 随机数 1-6

java - 平铺 map 上的 LibGDX AStar 寻路

php - 让用户呈现自己的 SVG 文件的安全隐患