我可以在保留私钥的同时更改Android签名证书主题

Laa*_*aas 7 android google-play

我开发了一个Android应用程序,我将转移给另一个人进一步开发.我了解如果新开发人员使用相同的密钥库,则无缝升级过程将继续.

Android在更新应用程序时如何验证证书?它只是验证签名还是将整个证书与主题名称进行比较

我的问题是,新开发者希望以他们的公司名称销售应用程序,而不是我的,因此Google帐户会发生变化.但是证书还包含我的名字,我想生成具有相同私钥的新证书,该私钥应该产生相同的签名,但在Cert中具有不同的主题.

我没有将证书用于任何其他应用程序,所以我没有问题.

PS.是否可以使用相同的密钥库和软件包名称从其他Google帐户上传相同的应用程序,以便继续无缝升级?

Ash*_*win 5

不,当签署证书时,证书的TBS字段已签名.如您所见,TBS 字段包含Subject字段.

 Certificate  ::=  SEQUENCE  {
        tbsCertificate       TBSCertificate,
        signatureAlgorithm   AlgorithmIdentifier,
        signatureValue       BIT STRING  }

   TBSCertificate  ::=  SEQUENCE  {
        version         [0]  EXPLICIT Version DEFAULT v1,
        serialNumber         CertificateSerialNumber,
        signature            AlgorithmIdentifier,
        issuer               Name,
        validity             Validity,
        subject              Name,
        subjectPublicKeyInfo SubjectPublicKeyInfo,
        issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                             -- If present, version MUST be v2 or v3
Run Code Online (Sandbox Code Playgroud)


因此,您无法更改TBS中的字段.继续而不更改证书(主题)或使用其他人的凭据创建新证书.但为此你必须停用你的应用程序.并上传一个新的应用程序(不作为更新,但作为一个新的应用程序),我认为这不是一个好的解决方案.因此,最好继续使用您的证书.

它不关心实际的"细节"(证书DN,序列号等),但只是说比较证书作为二进制斑点这里.由于证书不同,因此您无法使用cert1更新最初使用cert1签名的应用程序.