文档管理中心

系统证书凭据开发指导

系统证书凭据用于系统服务(如WLAN、VPN服务)连接服务器时,服务器对接入设备进行身份认证。系统证书凭据功能提供了系统级别的证书凭据(包含证书链和私钥)的安全存储和签名能力。系统证书凭据的公私钥对存储在Universal Keystore Kit

系统证书凭据可以由设备的用户进行安装和管理,也可以由应用通过API拉起证书管理服务的对话框,引导用户完成安装。

说明

本开发指导需使用API版本23及以上版本SDK。

系统证书凭据只能由系统服务进行读取和使用。

系统证书凭据安装成功后,用户需要到系统设置应用界面进行对应的配置,WLAN、VPN等系统服务才能使用安装的系统证书凭据。

约束与限制

系统证书凭据的安装和签名、验签操作,依赖密钥管理服务(HUKS)能力。

开发步骤

  1. 权限申请和声明。

    需要申请的权限:ohos.permission.ACCESS_CERT_MANAGER

    声明权限请参考:声明权限

  2. 导入相关模块。

    import { certificateManagerDialog } from '@kit.DeviceCertificateKit';
    import { BusinessError } from '@kit.BasicServicesKit';
    import { common } from '@kit.AbilityKit';
    import { UIContext } from '@kit.ArkUI';
    import { util } from '@kit.ArkTS';
  3. 安装系统证书凭据。

    调用openInstallCertificateDialog接口可拉起系统证书凭据安装的对话框(certType参数设置为CREDENTIAL_SYSTEM),安装页面需要用户输入正确的密钥库文件密码。

    说明

    系统证书凭据功能当前仅支持RSA、ECC及SM2算法类型的证书和私钥。

    openInstallCertificateDialog接口当前只支持P12格式的密钥库文件。

样例代码

import { certificateManagerDialog } from '@kit.DeviceCertificateKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { common } from '@kit.AbilityKit';
import { UIContext } from '@kit.ArkUI';
import { util } from '@kit.ArkTS';

function systemCredSample(): void {
  /* context为应用的上下文信息,调用方自行获取,此处仅为示例 */
  let context: common.Context = new UIContext().getHostContext() as common.Context;

  /* 安装的凭据数据需要业务赋值,本例数据非凭据数据。 */
  let keystoreBase64Str = 'MIIMJgIBAzCCC+AGCSqGSIb3DQEHAaCCC9EEggvNMIILyTCCBW4GCSqGSIb3DQEH' +
    // ...
    'G615kxCjeS6uixCHuij3pgQUhHiChcSeohRPrVkVPSPmYr9tjAYCAgQA';
  /* 凭据数据转换为Uint8Array,凭据数据为der格式 */
  let keystore: Uint8Array = new util.Base64Helper().decodeSync(keystoreBase64Str);

  try {
    /* 安装系统证书凭据 */
    certificateManagerDialog.openInstallCertificateDialog(
      context,
      certificateManagerDialog.CertificateType.CREDENTIAL_SYSTEM,
      certificateManagerDialog.CertificateScope.CURRENT_USER,
      keystore
    ).then((keyUri: string) => {
      console.info(`Install system credential success, keyUri: ${keyUri}`);
    }).catch((error: BusinessError) => {
      console.error(`Failed to install system credential. Code: ${error.code}, message: ${error.message}`);
    });
  } catch (error) {
    console.error(`Failed to install system credential. Code: ${error.code}, message: ${error.message}`);
  }
  return;
}
搜索
请输入您想要搜索的关键词