keystore
KeyStore是一个用于存储密钥和证书的安全容器。它提供了安全的方式来存储敏感信息,如密钥对、数字证书等,以防止它们被未授权的应用或攻击者访问。KeyStore通常用于加密数据、数字签名、TLS/SSL连接等场景。在Android开发中,KeyStore通过java.security.KeyStore类实现,并提供了特定于Android平台的实现AndroidKeyStore,后者提供了更高级的安全功能,如硬件支持和密钥链随机生成。KeyStore的使用有助于保护应用程序和系统的数据安全性和完整性
android生成sdk的keystore
步骤
- 编译sdk,注意user与userdebug编译出来的密钥与keystore是不相同的
编译后生成的密钥目录分别对应如下,或可使用find命令搜索
./vendor/sprd/platform/packages/apps/Messaging/signature/release/platform.pk8
./vendor/sprd/platform/packages/apps/Messaging/signature/debug/platform.pk8
./vendor/sprd/platform/packages/apps/Messaging/signature/release/platform.x509.pem
./vendor/sprd/platform/packages/apps/Messaging/signature/debug/platform.x509.pem - user版本则在relese目录,userdebug在debug目录下,把这个platform.pk8与platform.x509.pem拷贝出来
- 使用openssl及keytool命令生成keystore文件
openssl pkcs8 -in ./platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name r2
keytool -importkeystore -deststorepass123 -destkeypass 123 -destkeystore test.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -deststoretype JKS -srcstorepass 123 -alias r2
问题:
keytool如果参数或版本不对,可能会有这个警告:
Warning:
使用的 SHA1withRSA 签名算法被视为存在安全风险。此算法将在未来的更新中被禁用。
然后用这个生成的keystore,编译,编译会出错。
Failed to read key r2 from store “/opt/android/project/R2-Dict/r2_release.keystore”: Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available
解决
方法是keytool加参数 -deststoretype JKS
作者:帅得不敢出门