HarmonyOS 鸿蒙Next 证书解析

HarmonyOS 鸿蒙Next 证书解析

// 解析证书
certParseByBase64Str = (base64Str: string): ResolveResult => {
  let certData = '-----BEGIN CERTIFICATE-----\n' + base64Str + '\n-----END CERTIFICATE-----\n';
  Logger.info('certData=:', certData);

  let textEncoder = new util.TextEncoder();
  let encodingBlob: certFramework.EncodingBlob = {

    // 将证书数据从string类型转换成Unit8Array data: textEncoder.encodeInto(certData),

    // 证书格式,仅支持PEM和DER。在此示例中,证书为PEM格式

    encodingFormat: certFramework.EncodingFormat.FORMAT_PEM
  };

  let resultData: ESObject = {};

  let ret: ResolveResult = {}
  certFramework.createX509Cert(encodingBlob, (err, x509Cert) => {
    if (err != null) {
      Logger.info('err.message=:', JSON.stringify(err));

      // 创建X509Cert实例失败

      ret = {
        iSuccessful: false,
        errorMsg: "createX509Cert failed, errCode:${err.code}, errMsg:${err.message}",
        data: resultData
      };
      return ret;

    } else {

      try {

        let CN = x509Cert.getSubjectName();

        // 证书的序列号
        let serialNumner = x509Cert.getCertSerialNumber();

        // 证书有效期起始日期
        let notBeforeTime = x509Cert.getNotBeforeTime();

        // 证书有效期截止日期
        let notAfterTime = x509Cert.getNotAfterTime();
        Logger.info('serialNumner=:', serialNumner.toString());
        Logger.info('notBeforeTime=:', notBeforeTime);
        Logger.info('notAfterTime=:', notAfterTime);
        resultData = {
          serialNumner: serialNumner,
          notBeforeTime: notBeforeTime,
          notAfterTime: notAfterTime,
          CN: CN
        };

        Logger.info('resultData=:', JSON.stringify(resultData));
        ret = { iSuccessful: true, errorMsg: '', data: resultData };
        return ret;
      } catch (e) {
        ret = { iSuccessful: false, errorMsg: "解析异常" + e.message, data: resultData };
        return ret;
      }
    }
  })
}

写了一个证书解析的方法  解析后怎么返回返回出去?目前在createX509Cert这样写返回ResolveResult 报错。

还有一个疑问  

let CN = x509Cert.getSubjectName();

解析证书CN怎么获取?在官方文档上没有找到。


更多关于HarmonyOS 鸿蒙Next 证书解析的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
x509Cert.getSubjectName();方法返回的是Uint8Array类型的数据,如何将Uint8Array转换成String您可以尝试使用@ohos.util中的decodeToString
方法。官方文档如下:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-util-V5#decodetostring12

证书算法库x509Cert.getSubjectName()接口返回的是ASCII编码,不支持中文。

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


针对HarmonyOS 鸿蒙Next证书解析的问题,以下是一些专业解答:

HarmonyOS鸿蒙Next在应用开发过程中,涉及多种证书文件的解析与使用。主要包括P12、CSR、CER以及P7B等文件格式。

  • P12文件:这是一种包含私钥和证书的二进制文件格式,主要用于应用签名,确保应用的安全性与可信来源。
  • CSR文件:全称为Certificate Signing Request,即证书签名请求文件,包含公钥以及申请者的身份信息。当需要向证书颁发机构(CA)申请证书时,会先生成一个CSR文件并提交给CA。
  • CER文件:这是一种证书文件格式,通常包含公钥和证书持有者的信息,用于验证应用的签名。该文件由华为AppGallery Connect颁发。
  • P7B文件:这是一种包含证书链的文件格式,通常用于存储根证书、中间证书和最终用户证书。在应用签名时,可能需要包含完整的证书链以确保信任。P7B文件(Profile文件)还包含了HarmonyOS应用/元服务的包名、数字证书信息、权限列表等。

解析这些证书文件通常需要使用专业的工具或开发环境,如DevEco Studio。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部