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 = {
<span class="hljs-comment">// 将证书数据从string类型转换成Unit8Array data: textEncoder.encodeInto(certData),</span>
<span class="hljs-comment">// 证书格式,仅支持PEM和DER。在此示例中,证书为PEM格式</span>
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));
<span class="hljs-comment">// 创建X509Cert实例失败</span>
ret = {
iSuccessful: <span class="hljs-literal">false</span>,
errorMsg: <span class="hljs-string">"createX509Cert failed, errCode:${err.code}, errMsg:${err.message}"</span>,
data: resultData
};
<span class="hljs-keyword">return</span> ret;
} <span class="hljs-keyword">else</span> {
<span class="hljs-keyword">try</span> {
<span class="hljs-keyword">let</span> CN = x509Cert.getSubjectName();
<span class="hljs-comment">// 证书的序列号</span>
<span class="hljs-keyword">let</span> serialNumner = x509Cert.getCertSerialNumber();
<span class="hljs-comment">// 证书有效期起始日期</span>
<span class="hljs-keyword">let</span> notBeforeTime = x509Cert.getNotBeforeTime();
<span class="hljs-comment">// 证书有效期截止日期</span>
<span class="hljs-keyword">let</span> notAfterTime = x509Cert.getNotAfterTime();
Logger.info(<span class="hljs-string">'serialNumner=:'</span>, serialNumner.toString());
Logger.info(<span class="hljs-string">'notBeforeTime=:'</span>, notBeforeTime);
Logger.info(<span class="hljs-string">'notAfterTime=:'</span>, notAfterTime);
resultData = {
serialNumner: serialNumner,
notBeforeTime: notBeforeTime,
notAfterTime: notAfterTime,
CN: CN
};
Logger.info(<span class="hljs-string">'resultData=:'</span>, <span class="hljs-built_in">JSON</span>.stringify(resultData));
ret = { iSuccessful: <span class="hljs-literal">true</span>, errorMsg: <span class="hljs-string">''</span>, data: resultData };
<span class="hljs-keyword">return</span> ret;
} <span class="hljs-keyword">catch</span> (e) {
ret = { iSuccessful: <span class="hljs-literal">false</span>, errorMsg: <span class="hljs-string">"解析异常"</span> + e.message, data: resultData };
<span class="hljs-keyword">return</span> ret;
}
}
})
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
写了一个证书解析的方法 解析后怎么返回返回出去?目前在createX509Cert这样写返回ResolveResult 报错。
还有一个疑问
let CN = x509Cert.getSubjectName();
解析证书CN怎么获取?在官方文档上没有找到。
方法。官方文档如下:
证书算法库x509Cert.getSubjectName()接口返回的是ASCII编码,不支持中文。
针对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 。