微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有必要在 android 中安全地存储 SPKI 哈希?

如何解决是否有必要在 android 中安全地存储 SPKI 哈希?

我正在尝试启用公钥固定,因为我不想为每次证书续订发布更新,前提是我每次都使用相同的 CSR。

我用这个脚本生成了哈希。

#!/bin/bash
certs=`openssl s_client -servername $1 -host $1 -port 443 -showcerts </dev/null 2>/dev/null | sed -n '/Certificate chain/,/Server certificate/p'`
rest=$certs
while [[ "$rest" =~ '-----BEGIN CERTIFICATE-----' ]]
do
 cert="${rest%%-----END CERTIFICATE-----*}-----END CERTIFICATE-----"
 rest=${rest#*-----END CERTIFICATE-----}
 echo `echo "$cert" | grep 's:' | sed 's/.*s:\(.*\)/\1/'`
 echo "$cert" | openssl x509 -pubkey -noout | 
     openssl rsa -pubin -outform der 2>/dev/null | 
     openssl dgst -sha256 -binary | openssl enc -base64
done

希望它不会改变!

我正在使用 okhttp3 certificatePinner 将其嵌入到改造中。

private CertificatePinner getCertificatePinner() {
    return new CertificatePinner.Builder()
            .add("<api base URL>","sha256/<the key>")
            .build();
}

我的问题是,我们是否应该使用 NDK 或其他方式将其安全地存储在应用程序中?因为如果每个人都知道 API 基本 URL,就可以生成此密钥。

不确定这是否是一个愚蠢的问题。

谢谢

解决方法

这不是秘密,您可以自由存储证书密码。但大多数建议都反对使用证书锁定,除非您知道自己在做什么以及您的安全团队证书策略是什么。从实时服务器获取它在轮换证书或切换到备份时会遇到麻烦。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。