2017-03-06 49 views
1

我确实有一个问题困扰着我。每当您使用Google API等Firebase数据库时,您都会在创建时告诉Endpoint允许使用的应用程序的程序包名称,以及您用于签署应用程序的证书的指纹。 现在,当您尝试使用其他应用程序(不同软件包名称)的API或更改签名证书(例如从调试切换到发布)时,Google会拒绝该通话。验证自定义API上的签名证书指纹电话

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

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

我的目标是验证服务器上的请求,而不是使用参数+ salt和潜在时间戳的散列值。

+0

你把你的应用程序的证书指纹的火力点安慰自己,他们只是做了比较。 –

+0

@HristoStoyanov与什么比较? API何时以及如何将指纹与请求一起发送?显然,指纹在服务器上进行比较,但客户端的指纹如何到达服务器? – grAPPfruit

回答

0

我做了一些关于该主题的更多研究。事实证明,你可以在运行时访问签名证书,像这样:

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

found here