我继承了一个Android项目,其中前一个维护者在应用程序的build.gradle中以纯文本格式存储了发布和调试签名密钥库和密钥别名/密码。然后将其检入GitHub Git存储库。回购只是我可以访问的,所以目前这不是什么大不了的事,但将来会有更多人访问我想阻止发布签名的回购。
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword ‘<password in plaintext>’
keyAlias ‘<alias in plaintex>’
keyPassword ‘<password in plaintext>’
}
release {
storeFile file(“<path to .jks file>“)
storePassword ‘<password in plaintext>’
keyAlias ‘<alias in plaintex>’
keyPassword ‘<password in plaintext>’
}
}
我知道这是一种不好的做法,我想删除明文密码和别名。起初我考虑过简单地删除明文并从未检入仓库(https://developer.android.com/studio/publish/app-signing.html#secure-shared-keystore)的外部文件中读取密码。但是,我突然意识到密码仍然在Git历史中并且很容易被发现。然后我做了一些研究,发现你可以在密钥库(Keystore change passwords)上更改密码。太棒了,但如果我这样做,有人能够在从Git仓库更改密码之前下载旧版本的密钥库并使用旧密码生成有效签名吗?
答案 0 :(得分:0)
查找已添加密码的提交。然后是git rebase -i commitHash
。在此提交上使用编辑,删除密码,然后继续重新定位,如果之后更改了密码,则应该发生冲突,因此您也可以删除它们。然后使用外部文件进行新提交。你应该在你拥有的所有分支上做到这一点,或者更好,但只保留主人并在那里做。