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 文件

    打开终端,执行以下命令(参数需根据实际情况调整):

    bash 复制代码
    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 备案):

    bash 复制代码
    keytool -list -v -keystore [文件名].keystore

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


二、提取公钥

  1. 导出公钥文件(.cer)

    执行命令将公钥导出为 .cer 格式:

    bash 复制代码
    keytool -exportcert -alias [证书别名] -file [公钥文件名].cer -keystore [文件名].keystore
  2. 转换为 PEM 格式并查看公钥

    使用 openssl 工具转换格式并提取公钥内容:

    bash 复制代码
    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 的密码):

    bash 复制代码
    keytool -importkeystore -srckeystore [文件名].keystore -destkeystore [文件名].p12 -deststoretype PKCS12
  2. 提取 PEM 格式的证书

    使用 openssl 从 PKCS12 文件中导出证书:

    bash 复制代码
    openssl pkcs12 -in [文件名].p12 -nokeys -out [证书名].pem -nodes

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

  3. 获取 MD5 签名

    对导出的 PEM 证书计算 MD5 指纹:

    bash 复制代码
    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),切换到旧版本后执行:

    bash 复制代码
    keytool -list -v -keystore [文件名].keystore

    旧版 keytool 会显示 MD5 签名。

  2. 使用 Docker 运行旧版 Java

    若无旧版 Java,可通过 Docker 快速启动一个 Java 8 环境:

    bash 复制代码
    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 格式
bash 复制代码
keytool -importkeystore -srckeystore your.keystore -destkeystore temp.p12 -deststoretype PKCS12
  • 操作说明
    • your.keystore:你的证书文件名。
    • temp.p12:生成的临时 PKCS12 文件。
    • 输入原 .keystore 的密码(密钥库口令)。
2. 导出 PEM 格式的证书
bash 复制代码
openssl pkcs12 -in temp.p12 -nokeys -out cert.pem -nodes
  • 输入 PKCS12 文件的密码(与上一步一致)。
3. 提取 MD5 指纹
bash 复制代码
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. 清理临时文件(可选)
bash 复制代码
rm temp.p12 cert.pem

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

1. 使用 Java 8 或更低版本

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

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

关键注意事项

  1. MD5 的格式要求

    • 如果目标平台需要 去除冒号 (如 12A3456789ABCDEF12A3456789ABCDEF),可直接用文本编辑器替换。

    • 示例命令(在终端中处理):

      bash 复制代码
      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:

    bash 复制代码
    brew install openssl
  • 生成的 MD5 与平台要求不符

    检查是否复制了完整的指纹(16组十六进制值),或尝试重新生成证书。


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

相关推荐
鸿蒙布道师7 分钟前
鸿蒙NEXT开发对象工具类(TS)
android·ios·华为·harmonyos·arkts·鸿蒙系统·huawei
Harrison_zhu1 小时前
Ubuntu18.04 编译 Android7.1代码报错
android
刘小哈哈哈2 小时前
封装了一个iOS多分区自适应宽度layout
macos·ios·cocoa
web_Hsir2 小时前
uniapp 微信小程序 使用ucharts
微信小程序·小程序·uni-app
web_Hsir3 小时前
Uniapp 实现微信小程序滑动面板功能详解
vue.js·微信小程序·uni-app
CYRUS STUDIO3 小时前
Unidbg Trace 反 OLLVM 控制流平坦化(fla)
android·汇编·算法·网络安全·逆向·ollvm
扫地的小何尚4 小时前
NVIDIA工业设施数字孪生中的机器人模拟
android·java·c++·链表·语言模型·机器人·gpu
fakaifa4 小时前
beikeshop多商户跨境电商独立站最新版v1.6.0版本源码
前端·小程序·uni-app·php·beikeshop多商户·beikeshop跨境电商
YJlio4 小时前
TrollStore(巨魔商店)介绍及操作手册
macos·objective-c·cocoa
mywpython5 小时前
mac 最新的chrome版本配置selenium的方式
chrome·python·selenium·macos