欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > macos uni-app 如何生成安卓APP的公钥和签名

macos uni-app 如何生成安卓APP的公钥和签名

2025/3/1 10:32:16 来源:https://blog.csdn.net/weixin_40466351/article/details/145926474  浏览:    关键词:macos uni-app 如何生成安卓APP的公钥和签名

问题1:macos uni-app 如何生成安卓APP的公钥和签名

在 macOS 环境下,使用 uni-app 生成安卓 APP 的公钥和签名,主要涉及 生成签名证书(.keystore 文件)提取公钥 两个核心步骤。以下是详细操作流程:


一、生成 Android 签名证书(.keystore 文件)

  1. 安装 Java 环境
    确保 macOS 已安装 Java 开发环境(JRE/JDK),可通过终端输入 java -version 验证。若未安装,需从 Oracle 官网 下载 JDK 并安装。

  2. 生成 .keystore 文件
    打开终端,执行以下命令(参数需根据实际情况调整):

    keytool -genkey -alias [证书别名] -keyalg RSA -keysize 2048 -validity 36500 -keystore [文件名].keystore
    
    • 参数说明
      • -alias:证书别名(自定义,如 myapp)。
      • -keystore:生成的证书文件名(如 myapp.keystore)。
      • -validity:证书有效期(单位:天,建议设置较长如 36500)。
    • 操作提示
      • 按提示输入密钥库口令(密码)、开发者信息(姓名、组织、地区等)。
      • 生成的文件默认保存在当前终端路径,建议指定完整路径(如 /Users/username/Documents/myapp.keystore)。
  3. 验证证书信息
    通过以下命令查看证书详情,获取 MD5 签名(用于微信开放平台或 App 备案):

    keytool -list -v -keystore [文件名].keystore
    

    输入密钥库口令后,在输出结果中找到 MD5 值。


二、提取公钥

  1. 导出公钥文件(.cer)
    执行命令将公钥导出为 .cer 格式:

    keytool -exportcert -alias [证书别名] -file [公钥文件名].cer -keystore [文件名].keystore
    
  2. 转换为 PEM 格式并查看公钥
    使用 openssl 工具转换格式并提取公钥内容:

    openssl x509 -inform der -in [公钥文件名].cer -pubkey -noout
    

    终端会直接输出公钥字符串(以 -----BEGIN PUBLIC KEY----- 开头)。


三、在 uni-app 中配置签名

  1. 打包时使用证书
    在 HBuilderX 中,选择 发行 > 原生 App 云打包,填写以下信息:

    • 证书别名:与生成时设置的别名一致。
    • 证书私钥密码:密钥库口令。
    • 证书文件:选择生成的 .keystore 文件。
  2. 备案与平台配置

    • App 备案:将生成的 MD5 签名公钥 填写至备案平台(如腾讯云)。
    • 微信开放平台:若应用使用微信登录/支付,需确保微信开放平台配置的签名与 MD5 值一致。

注意事项

  1. 证书安全.keystore 文件是应用的核心身份标识,需妥善保存,避免泄露或丢失。
  2. 有效期设置:建议证书有效期足够长(如 100 年),避免频繁更新。
  3. 环境问题:若终端提示权限不足,可在命令前添加 sudo 执行。

以上步骤综合了 macOS 环境适配、uni-app 打包流程及公钥提取方法,适用于大多数场景。如需进一步简化操作,可使用在线工具(如 Application Loader)一键生成证书。

问题2:keytool -list -v -keystore [文件名].keystore 输入命令后,只有 SHA1和 SHA256 ,没有看到MD5 签名

您遇到的情况是因为较新版本的 Java keytool 默认不再显示 MD5 签名(出于安全考虑,MD5 被认为不够安全)。但部分平台(如某些应用备案系统)仍要求提供 MD5 签名。以下是 两种解决方案


方案一:通过 openssl 手动提取 MD5 签名

  1. 将 .keystore 转换为 PKCS12 格式
    执行以下命令(需要输入 keystore 的密码):

    keytool -importkeystore -srckeystore [文件名].keystore -destkeystore [文件名].p12 -deststoretype PKCS12
    
  2. 提取 PEM 格式的证书
    使用 openssl 从 PKCS12 文件中导出证书:

    openssl pkcs12 -in [文件名].p12 -nokeys -out [证书名].pem -nodes
    

    输入 PKCS12 文件的密码(与 keystore 密码相同)。

  3. 获取 MD5 签名
    对导出的 PEM 证书计算 MD5 指纹:

    openssl x509 -in [证书名].pem -noout -fingerprint -md5
    

    输出类似:
    MD5 Fingerprint=XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX


方案二:强制 keytool 显示 MD5(需旧版 Java)

  1. 临时切换旧版 Java 环境
    如果您安装了多版本 JDK(如 JDK 8),切换到旧版本后执行:

    keytool -list -v -keystore [文件名].keystore
    

    旧版 keytool 会显示 MD5 签名。

  2. 使用 Docker 运行旧版 Java
    若无旧版 Java,可通过 Docker 快速启动一个 Java 8 环境:

    docker run --rm -v $(pwd):/data openjdk:8-jdk \keytool -list -v -keystore /data/[文件名].keystore
    

    执行后会将当前目录挂载到容器中,直接显示 MD5 签名。


关键原因说明

  • Java 版本差异:Java 9+ 的 keytool 默认隐藏 MD5,优先显示 SHA-256 和 SHA-1。
  • 兼容性需求:若目标平台(如备案系统)强制要求 MD5,需通过上述方法获取。

替代建议

如果目标平台允许,建议直接使用 SHA-256 签名(更安全),避免依赖 MD5。

问题3:macOS 证书生成了,如何查看证书MD5的值

在 macOS 中,如果通过 keytool 生成的证书没有直接显示 MD5 值(常见于较新版本的 Java),可以通过以下步骤安全提取 MD5 指纹:


方法一:使用 openssl 手动提取(推荐)

1. 将 .keystore 转换为 PKCS12 格式
keytool -importkeystore -srckeystore your.keystore -destkeystore temp.p12 -deststoretype PKCS12
  • 操作说明
    • your.keystore:你的证书文件名。
    • temp.p12:生成的临时 PKCS12 文件。
    • 输入原 .keystore 的密码(密钥库口令)。
2. 导出 PEM 格式的证书
openssl pkcs12 -in temp.p12 -nokeys -out cert.pem -nodes
  • 输入 PKCS12 文件的密码(与上一步一致)。
3. 提取 MD5 指纹
openssl x509 -in cert.pem -noout -fingerprint -md5
  • 输出示例
    MD5 Fingerprint=12:A3:45:67:89:AB:CD:EF:12:A3:45:67:89:AB:CD:EF
    
  • 直接复制 = 后的字符串(去掉空格和 MD5 Fingerprint 前缀)。
4. 清理临时文件(可选)
rm temp.p12 cert.pem

方法二:强制 keytool 显示 MD5(需旧版 Java)

1. 使用 Java 8 或更低版本

如果你已安装旧版 JDK(如 JDK 8),切换到对应版本后直接运行:

keytool -list -v -keystore your.keystore
  • 旧版 keytool 会显示完整的 MD5 值。
2. 通过 Docker 快速获取(无需安装旧版 Java)
docker run --rm -v $(pwd):/data openjdk:8-jdk \keytool -list -v -keystore /data/your.keystore
  • 输入密码后,直接显示 MD5 签名。

关键注意事项

  1. MD5 的格式要求

    • 如果目标平台需要 去除冒号(如 12A3456789ABCDEF12A3456789ABCDEF),可直接用文本编辑器替换。
    • 示例命令(在终端中处理):
      echo "12:A3:45:67:89:AB:CD:EF:12:A3:45:67:89:AB:CD:EF" | tr -d ':'
      
  2. 安全性提示

    • MD5 已不推荐用于加密场景,但某些备案系统仍会要求提供。
    • 确保私钥文件(.keystore不要泄露,它是应用签名的唯一凭证。

常见问题

  • 报错 openssl: command not found
    需安装 OpenSSL:

    brew install openssl
    
  • 生成的 MD5 与平台要求不符
    检查是否复制了完整的指纹(16组十六进制值),或尝试重新生成证书。


通过上述任一方法,均可准确获取证书的 MD5 值。推荐使用 方法一openssl),无需依赖旧版 Java 环境。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词