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

系统证书凭据可以由设备的用户进行安装和管理,也可以由应用通过API拉起证书管理服务的对话框,引导用户完成安装。
本开发指导需使用API版本23及以上版本SDK。
系统证书凭据只能由系统服务进行读取和使用。
系统证书凭据安装成功后,用户需要到系统设置应用界面进行对应的配置,WLAN、VPN等系统服务才能使用安装的系统证书凭据。
系统证书凭据的安装和签名、验签操作,依赖密钥管理服务(HUKS)能力。
权限申请和声明。
需要申请的权限:ohos.permission.ACCESS_CERT_MANAGER
声明权限请参考:声明权限
导入相关模块。
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'; 安装系统证书凭据。
调用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;
}