【问题标题】:Certificate Pinning - Generate SHA256 Pinning Key from Certificate .crt file证书固定 - 从证书 .crt 文件生成 SHA256 固定密钥
【发布时间】:2018-12-12 22:07:51
【问题描述】:

我有一个正在运行的 Android 应用程序,它使用 SHA256 Pin 实现证书固定。我使用https://www.ssllabs.com/ssltest 工具获取该引脚。

当前服务器证书即将到期,将向服务器申请新证书。在将新证书应用到服务器之前,我需要为它生成 SHA256 Pin,以便我可以将它添加到应用程序并在更新中引入它。

我有新的证书 .crt 文件。知道如何从文件中生成 SHA256 密钥吗?我无法访问服务器,只有 .crt 文件。

根据 OkHttp 的 CertificatePinner 文档:

SHA-256 或 SHA-1 哈希。每个 pin 都是证书主题的哈希 公钥信息,base64 编码并以 sha256/ 或 sha1/.

【问题讨论】:

  • 那么为什么不按照您引用的文档所说的去做呢?您还应该考虑固定 CA 证书,这样您就不必不断更新您的应用。
  • This 是您正在寻找的。确保您拥有最新版本的openssl
  • @JamesKPolk 我已经尝试在旧证书上这样做,但我得到的密钥与我拥有的不同。我对如何执行这些步骤以及我应该对哪个字符串进行哈希处理一头雾水,但我试图对许多值进行处理。不过,OpenSSL 代码对我有用。关于CA证书,这是否意味着中间证书?如果是这样,我认为这在我们的案例中是不可能的,因为我们没有专门的中间证书。

标签: android ssl certificate-pinning


【解决方案1】:

试试这个命令

openssl x509 -in my-certificate.crt -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

然后使用

"sha256/"  + ${ouput hash from the command line above}.

您可以在 Mozilla 开发者网络的 Public Key Pinning page 找到更多命令

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-17
    • 2019-10-03
    • 1970-01-01
    • 2018-10-28
    • 2017-06-07
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多