【问题标题】:How does SSL Hostname matching work on JWS?SSL 主机名匹配如何在 JWS 上工作?
【发布时间】:2017-10-30 22:05:54
【问题描述】:

在使用适用于 Android 的 Google SafetyNet 时,文档建议您

验证 SSL 证书链并使用 SSL 主机名匹配 确保叶认证问题发给attest.android.com

现在这是如何工作的?我会假设我收到 JWS 消息检查证书和签名等,但会针对从 attest.android.com 获取的证书进行验证,但 attest.android.com 不是实时主机。

SSL 签名是否可以在事先不知道域的公钥的情况下进行验证?即我可以验证来自传入 JWS 消息的所有内容吗?我不明白这怎么可能,是吗?

【问题讨论】:

    标签: android ssl java-web-start safetynet


    【解决方案1】:

    不幸的是,文档描述的不是你必须做的。

    JWS 数据包括三个部分:标头、有效负载和签名。简单来说,头部包含用于对有效负载进行签名的公钥证书,并且签名包含在末尾。

    要验证 SafetyNet JWS,您首先需要提取嵌入在标头中的证书。这些证书具有可以验证到公共根证书的信任链,因此您应该验证这些确实是有效的证书,并且它们是颁发给attest.android.com

    然后您取出签名,并根据嵌入的证书对其进行验证。

    如果您选中此项,那么您可以信任有效负载。但在查看basicIntegrityctsProfileMatch 之前,请确保apkPackageNameapkDigestSha256apkCertificateDigestSha256 与您的应用匹配,这样您就知道响应实际上来自您未修改的应用。

    最理想的情况是,您的编程语言应该包含一个 JWS 库和一个 SSL 库,它们可以为您完成此任务,因此您不必自己编写。 public sample 包含一个 Java 示例供您仔细阅读。

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      相关资源
      最近更新 更多