从现有的“导入密钥证书”为我的 MAUI Android 项目重新创建有效的密钥库

问题描述 投票:0回答:1

我正在开发一款 Android 应用,该应用于 2024 年 1 月在 Google Play Console 上发布。 我使用了 Windows 密钥库“mafirstkeystoreformyapp.keystore”。

因为我想升级我的笔记本电脑,所以我买了一台新的,从我的 GitHub 存储库取回我的项目,进行测试:一切正常。

所以我格式化了我的第一台笔记本电脑。

但我意识到,当我想为 Google Play Console 创建新版本时,我的应用程序签名/足迹无法识别:

您的 Android App Bundle 是使用错误密钥签名的。确保您的应用程序包已使用正确的密钥进行签名,然后重试。导入的应用程序包应使用与“足迹”关联的证书进行签名 SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:B2 ,但使用的证书与足迹相关联 SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:A5

所以我联系了 Google Play Console 支持,这让我受益匪浅:

  • 从我的 MAUI 项目创建 JKS 文件:

    keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks

  • 将该密钥的证书导出为 PEM 格式

    keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks

  • 从我的帐户更新证书(需要 2 天)

但是这个.jks文件对我来说没有任何意义:windows keystore被识别为.keystore文件,所以它没有用

有没有办法将这个 .jks 转换为 .keystore ? 或者从现有的“导入密钥证书”轻松重新创建有效的密钥库?

关于第二个问题(与第一个问题相关)有很多 stackoverflow,但是,即使答案似乎是否定的,但看起来目前的情况已经发生了变化。 Android:我丢失了 Android 密钥存储,我该怎么办? 我丢失了 .keystore 文件? 从私钥和证书重新创建密钥库文件

我已经尝试过的

我发现了这个:.NET MAUI 应用程序的 Android 包签名 它非常接近,但用户问题与他的“应用程序签名密钥有关,而我必须使用应用程序导入密钥(因此无法完成他的解决步骤)

我尝试过:

  1. 从 Visual Studio 创建一个新的 .keystore,从 Play Console 获取 .der 密钥来添加它:KO(证书已添加,但在分发期间未使用)

  2. 创建一个新的密钥存储,删除默认密钥,从 Play Console 导入 .der 密钥来添加它:KO(密钥存储似乎已“损坏”,因此 Visual Studio 不允许我分发该应用程序)

  3. 从 Play Console 导入 .der 密钥并从中创建密钥库:KO(密钥库似乎已“损坏”,因此 Visual Studio 不允许我分发该应用程序)

  4. (在此之前执行 3)从专用 Windows 对话框导入新的密钥库:KO(出现 java 错误)

        à System.Runtime.InteropServices.Marshal.SecureStringToGlobalAllocUnicode(SecureString s) 
     à Xamarin.VisualStudio.SecureStringExtensions.ToUnsecureString(SecureString input) dans D:\a\_work\1\s\src\Core\VisualStudio\Extensions\SecureStringExtensions.cs:ligne 16
    à Xamarin.VisualStudio.Publishing.Presentation.ViewModels.AndroidImportKeyViewModel.<ImportAsync>d__49.MoveNext() dans D:\a\_work\1\s\src\Core\VisualStudio.Publishing\Presentation\ViewModels\AndroidImportKeyViewModel.cs:ligne 138
    

我使用 Keytool 来更新/创建密钥库:

keytool -import -alias vilolaboratory -file upload_cert.der -keystore vilolboratory.keystore
android maui keystore google-play-console
1个回答
0
投票

好吧,经过多次尝试和研究,如何将 .JKS 转换为“keystore”格式?帮助我发布了新版本:我能够为我当前的应用程序恢复可用的 .keystore 文件。

这里是主要步骤的总结:

第一步:生成.JKS

要求重新初始化密钥导入证书 Play Console >“设置 > 应用程序签名”/></a></p>
<p>它将带您创建 .jks 文件及其 .pem 证书文件。</p>
<p>您将需要使用 Keytool,这是 JDK 提供的命令行工具(如果您遇到问题,此 stackoverflow 可以提供帮助:<a href=错误:'keytool' 未被识别为内部或外部命令、可操作程序或批处理文件

上传.pem证书文件到玩控,等待两天。

第二步:将其转换为.keystore

您将需要再次使用keytool来转换JKS文件。 感谢@Geo367 :

keytool -importkeystore -srckeystore {generatedfile}.jks -srcstoretype JKS -destkeystore {TemporaryName}.p12 -deststoretype PKCS12

keytool -importkeystore -srckeystore {TemporaryName}.p12 -srcstoretype PKCS12 -destkeystore {DefinitiveName}.keystore -deststoretype JKS

但是生成的文件将无法被 Visual Studio 正确识别。 所以继续:

keytool -importkeystore -srckeystore {DefinitiveName}.keystore -destkeystore {DefinitiveName} -deststoretype pkcs12

它将应用最后一个密钥库格式(不能更具体:我根本不掌握这个主题)

第三步:准备Visual studio

将密钥库文件移动到 C:\Users{USER}\AppData\Local\Xamarin\Mono for Android\Keystore

然后,在 Visual Studio 中,进入“显示/显示档案”并按“分发...” enter image description here

通常,会出现一个“上传”密钥库:这就是你的英雄。

/!\ 就我而言,我需要删除最后创建的存档并重新发布,以便正确刷新数据并能够查看最后一个密钥库。

© www.soinside.com 2019 - 2024. All rights reserved.