HarmonyOS 鸿蒙Next webview 客户端证书 ERR_SSL_DECRYPT_ERROR_ALERT

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next webview 客户端证书 ERR_SSL_DECRYPT_ERROR_ALERT 以下代码是参考官方文档写的 webview 加载本地证书的例子。可以正常弹出用户证书选择窗口, e.handler.confirm(authUri) 也正常, 但是会触发 onErrorReceive, 消息是 ERR_SSL_DECRYPT_ERROR_ALERT, 之前在 Android 系统上同样的证书文件没有问题。

async grantAppPm() {
  if (!this.appUid) {
    let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT
      | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION;
    const data = await bundleManager.getBundleInfoForSelf(bundleFlags)
    hilog.info(0x0000, TAG, 'getBundleInfoForSelf successfully. Data: %{public}s', JSON.stringify(data));
    this.appUid = data.appInfo.uid.toString();
  }

  const res = await this.abilityCtx?.startAbilityForResult({
    bundleName: "com.ohos.certmanager",
    abilityName: "MainAbility",
    uri: "requestAuthorize",
    parameters: {
      appUid: this.appUid // 传入申请应用的appUid
    }
  } as Want)
  if (!res.resultCode && res.want && res.want.parameters) {
    return res.want.parameters.authUri as string; // 授权成功后获取返回的authUri
  }
  throw new Error('Failed')
}

Web({})
.onClientAuthenticationRequest(async (e) => {
  try {
    const authUri = await grantAppPm()
    e.handler.confirm(authUri)
  } catch (e) {
    hilog.error(0x0000, TAG, `GetPrivateCertificateErr: ${JSON.stringify(e)}`)
  }
})
.onErrorReceive((e) => {
  hilog.error(0x0000, TAG, 'WebErr: %{public}s, err: %{public}s', e.request.getRequestUrl(),
    e.error.getErrorInfo());
})

这是调用 startAbilityForResult() 后弹出的证书选择窗口


更多关于HarmonyOS 鸿蒙Next webview 客户端证书 ERR_SSL_DECRYPT_ERROR_ALERT的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

麻烦提供下 官方文档链接

更多关于HarmonyOS 鸿蒙Next webview 客户端证书 ERR_SSL_DECRYPT_ERROR_ALERT的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


onErrorReceive: 网页加载遇到错误时触发该回调。主资源与子资源出错都会回调该接口,可以通过request.isMainFrame来判断是否是主资源报错。出于性能考虑,建议此回调中尽量执行简单逻辑。在无网络的情况下,触发此回调。

这个不一定是证书的问题,官方的demo没有出来选证书这一步。你可以debug看一下,或者给个你的demo这边具体看下,

针对帖子标题“HarmonyOS 鸿蒙Next webview 客户端证书 ERR_SSL_DECRYPT_ERROR_ALERT”的问题,这里提供一个可能的解决方案:

在HarmonyOS的webview组件中遇到ERR_SSL_DECRYPT_ERROR_ALERT错误,通常与SSL/TLS握手过程中的客户端证书验证失败有关。这个问题可能由多种原因引起,包括但不限于证书链不完整、证书已过期、证书被吊销、客户端证书不匹配服务器要求等。

为了解决这个问题,可以尝试以下步骤:

  1. 检查证书有效性:确保客户端证书未过期,且未被吊销。同时,验证证书链是否完整,即从客户端证书到根证书的每一级都被正确签发。

  2. 确认证书格式:确保客户端证书的格式与服务器要求相匹配,通常是PKCS#12或PFX格式。

  3. 更新webview组件:如果使用的是HarmonyOS的旧版webview组件,尝试更新到最新版本,以修复可能存在的SSL/TLS相关bug。

  4. 服务器配置:检查服务器端的SSL/TLS配置,确保它接受并正确验证客户端证书。

如果上述步骤无法解决问题,可能是由于更深层次的系统或兼容性问题。此时,建议直接联系鸿蒙系统的技术支持团队或访问鸿蒙系统的官方开发者论坛寻求帮助。

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

回到顶部