Commit Graph

3 Commits

Author SHA1 Message Date
b2a0a42c91 docs(harmony): ★★ 推送根因定位到"**签错了证书**",不是"debug 证书不被接受"
平板复测抓到一条上一轮漏掉的华为侧日志,它把根因从推断变成实测:

    E cloudinterfaceauth/AuthService: cert finger empty, clientId: 2039846327155747840
    I PushService: push token 取不到:code=1000900010 Illegal application identity

★ `cert finger empty` = 设备报上来的是**空指纹**,不是"指纹对不上"。
  与 `bm dump` 完全吻合:appSignType=none、signatureKey=""。
  ⇒ 包里根本没有应用签名身份。

三个指纹实测对比(本机 openssl 算出):
  build-profile.json5 的 certpath → DF:21:A3:C0:…:DF:3A:37  CN=Huawei CBG Root CA G2
  .p7b 内嵌 development-cert    → FD:89:AC:53:…:FC:9D:09  CN=靳睿(…)\,Development
⇒ 工程签的是 **CA 根证书**,profile 绑的是**开发者应用证书**,两者根本不是同一张。

profile 侧其余要素已逐项排除为无关:bundle-name 对、type=debug、validity 未过期、
平板 UDID(bm get -u)逐字出现在 device-ids 里。

★★ 顺带记下走不通的那条路,免得下次重走:
  把 certpath 改成 profile 内嵌的单张 dev cert → hvigor 报
  `11013004 Profile cert must a cert chain`。
  **certpath 要的是一条链**,而那张 dev cert 的签发者
  `Huawei CBG Developer Relations CA G2` 本机没有(5 个 p7b 里都没有,
  material/ 里也没有任何证书)。
  ⇒ 给用户要材料时要说准:要**能构成链的整套**,单张 .cer 装不上;
    最省事是 DevEco 里 Project Structure → Signing Configs 直接同步签名。

服务端侧本轮复验仍正常:与 hms.go 同形(不带 scope)请求华为换到
access_token,长度 104、有效期 3600s ⇒ 断点确实只在设备侧签名。

build-profile.json5 的 certpath 保持原值并加了注释:改成单张 dev cert 会编译不过,
留着编不过的值只会连应用都装不上。
2026-10-02 00:32:21 +08:00
351be9dc5e build(harmony): 写入签名配置(devecocli signature generate 生成,指纹已登进 AGC)
用户把签名这块交给我(「你不是有devecocli嘛」)。做法:
- 共享浏览器里用已有登录态完成 DevEco CLI 授权(无需短信)→ devecocli auth status 通过
- client/harmony 下 `devecocli signature generate --product default`:
  生成 p12/csr/cer/p7b 到 ~/.ohos/config/,并把 signingConfigs 写进本文件
- 叶子证书 = CN=靳睿(1681189977251159745),Development,SHA256
  FD:89:AC:53:9C:C6:F9:37:C0:B4:E1:BC:82:91:B1:BA:11:15:46:33:66:88:F9:74:E0:A5:52:DA:46:FC:9D:09
  已登进 AGC 该应用的「SHA256证书/公钥指纹」(推送送达的前提)
- profile 绑 com.jianf.agentmail,debug 型,登记设备 3 台(1 模拟器 + 2 真机)

验签用官方工具(不用猜结构):hap-sign-tool verify-app → Verify success,
证书链里正是上面那张叶子证书。

注:signingConfigs 里的路径是绝对路径(DevEco 默认行为),换机器要重新生成。
2026-09-15 11:38:34 +08:00
f9d757b5e5 chore: directory migration - gateway→server, web→client/electron 2026-09-08 19:16:35 +08:00