HarmonyOS 鸿蒙Next用户p12凭证的迁移问题

发布于 1周前 作者 h691938207 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next用户p12凭证的迁移问题

在迁移安卓用户凭证相关代码的时候遇到了一些问题,求大佬解惑

1、webview在onClientAuthenticationRequest(request)的时候需要客户端对用户凭证进行解析,我找了一下webview的文档发现有一个demo能够实现通过文件选择的方式去回调request.handler.confirm(uri)的方式,但是debug的时候并没有任何效果且看不到错误日志,(onClientAuthenticationRequest的demo)。所以就想用request.handler.confirm(priKeyFile,certChainFile)的方式解决,但是我并没有找到怎么获取这两个参数的方式,求大佬解惑

2、迁移的时候发现harmony没有类似KeyChain的东西。我们这边在安卓里是通过下面的方式和webview的onReceivedClientCertRequest(view, request)交互的

val privateKey = KeyChain.getPrivateKey(currentActivity, alias)
val certificateChain = KeyChain.getCertificateChain(currentActivity, alias)
request.proceed(privateKey, chain) 

我找了下文档,看到了certManager的一些方法,但是似乎都没有能对应上面代码的替换方案

6 回复

1、使用onClientAuthenticationRequest方法,也可以在onSslErrorEventReceive函数中调用event.handler.handleConfirm()函数达到忽略ssl证书的效果

onClientAuthenticationRequest可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#onclientauthenticationrequest9

onSslErrorEventReceive可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#onsslerroreventreceive9

2、HarmonyOS可以参考这个:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/asset-store-kit-overview-0000001816916898

我现在使用的就是onClientAuthenticationRequest实现双向认证的那个demo,但是报错的回调方法不是onSslErrorEventReceive,就只有onErrorReceive,哈哈哈 而且我的用户凭证的uri已经给到event.handler.confirm()方法了,但是还是会出现ERR_SSL_CLIENT_AUTH_CERT_NEEDED这个错误,很奇怪

补充一下,第一个问题捕获到了错误信息,ERR_SSL_CLIENT_AUTH_CERT_NEEDED,但是还是不知道为什么,下面是获取p12文件时的代码
let authUri: string | undefined = undefined
    try {
      let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION;
      const data = await bundleManager.getBundleInfoForSelf(bundleFlags)
      const appUid = data.appInfo.uid.toString()
      let abilityContext = GlobalContext.getContext().getValue("AbilityContext")
      if (!abilityContext) {
        throw new CommonError(`get context fail on ${SystemCertificateProvider.name}`)
      }
      const result = await (abilityContext as common.UIAbilityContext).startAbilityForResult({
        bundleName: "com.ohos.certmanager",
        abilityName: "MainAbility",
        uri: "requestAuthorize",
        parameters: {
          appUid: appUid,
        }
      } as Want)
      if (!result.resultCode && result.want && result.want.parameters) {
        authUri = result.want.parameters.authUri as string
      }
    } catch (e) {
      LogUtil.error(e)
    }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

关于HarmonyOS 鸿蒙Next用户p12凭证的迁移问题,以下是一些可能的解决方案:

HarmonyOS 鸿蒙Next项目迁移至新电脑时,若遇到p12凭证相关的报错,通常是由于.p12文件(密钥库文件,用于保存工程签名的密钥)未正确迁移或配置。要解决这个问题,可以尝试以下方法:

  1. 检查.p12文件:确保原工程中的.p12文件已复制到新电脑的对应路径下。
  2. 配置签名信息:在新电脑的鸿蒙项目中,重新配置签名信息,确保signingConfigs中的storeFile路径正确指向.p12文件。
  3. 清理并重建项目:在开发环境中清理并重建项目,以确保新的签名配置生效。
  4. 验证签名:重新签名项目,并验证签名是否成功。

如果以上步骤无法解决问题,可能是签名配置文件存在其他错误或遗漏。此时,可以尝试清空build-profile.json5文件中的signingConfigs内容,然后同步项目并重新签名。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部