文档管理中心
您当前正在浏览HarmonyOS最新文档,覆盖已发布的所有API版本,可在API参考中筛选您使用的API版本。详细的版本配套关系请参考版本说明
API参考系统网络Network Kit(网络服务)ArkTS API@ohos.net.networkSecurity (网络安全校验)

@ohos.net.networkSecurity (网络安全校验)

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

本模块提供网络安全校验能力。应用可以通过证书校验API完成证书校验功能。

说明

本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

收起
自动换行
深色代码主题
复制
  1. import { networkSecurity } from '@kit.NetworkKit';

完整示例

收起
自动换行
深色代码主题
复制
  1. import { networkSecurity } from '@kit.NetworkKit';
  2. // Define certificate blobs
  3. const cert: networkSecurity.CertBlob = {
  4. type: networkSecurity.CertType.CERT_TYPE_PEM,
  5. data: '-----BEGIN CERTIFICATE-----\n... (certificate data) ...\n-----END CERTIFICATE-----',
  6. };
  7. const caCert: networkSecurity.CertBlob = {
  8. type: networkSecurity.CertType.CERT_TYPE_PEM,
  9. data: '-----BEGIN CERTIFICATE-----\n... (CA certificate data) ...\n-----END CERTIFICATE-----',
  10. };
  11. // Perform asynchronous certificate verification
  12. networkSecurity.certVerification(cert, caCert)
  13. .then((result) => {
  14. console.info('Certificate verification result:', result);
  15. })
  16. .catch((error: BusinessError) => {
  17. console.error('Certificate verification failed:', error);
  18. });
注意

请务必将示例中的证书数据替换为实际的证书内容。

CertType

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

证书编码类型。

系统能力: SystemCapability.Communication.NetStack

展开
名称 说明
CERT_TYPE_PEM 0 PEM格式证书。
CERT_TYPE_DER 1 DER格式证书。

CertBlob

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

证书数据。

系统能力: SystemCapability.Communication.NetStack

展开
名称 类型 只读 可选 说明
type CertType 证书编码类型。
data string | ArrayBuffer 证书内容。

networkSecurity.certVerification

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

certVerification(cert: CertBlob, caCert?: CertBlob): Promise<number>

系统将使用证书管理中的预置CA证书和用户安装的CA证书来校验应用传入的证书。使用Promise异步回调。

系统能力: SystemCapability.Communication.NetStack

参数

展开
参数名 类型 必填 说明
cert CertBlob 被校验的证书。
caCert CertBlob 传入自定义的CA证书。

返回值:

展开
类型 说明
Promise<number> 以promise形式返回一个数字,表示证书验证的结果。如果证书验证成功,则返回0; 否则验证失败。

错误码:

以下错误码的详细介绍请参见网络安全校验错误码通用错误码

展开
错误码ID 错误信息
401 Parameter error.
2305001 Unspecified error.
2305002 Unable to get issuer certificate.
2305003 Unable to get certificate revocation list (CRL).
2305004 Unable to decrypt certificate signature.
2305005 Unable to decrypt CRL signature.
2305006 Unable to decode issuer public key.
2305007 Certificate signature failure.
2305008 CRL signature failure.
2305009 Certificate is not yet valid.
2305010 Certificate has expired.
2305011 CRL is not yet valid.
2305012 CRL has expired.
2305018

Self-signed certificate.

适用版本:12+

2305023 Certificate has been revoked.
2305024 Invalid certificate authority (CA).
2305027 Certificate is untrusted.
2305069

Invalid certificate verification context.

适用版本:12+

说明

这些错误代码对应于证书验证过程中的各种失败。

示例:

收起
自动换行
深色代码主题
复制
  1. import { networkSecurity } from '@kit.NetworkKit';
  2. // Define certificate blobs
  3. const cert:networkSecurity.CertBlob = {
  4. type: networkSecurity.CertType.CERT_TYPE_PEM,
  5. data: '-----BEGIN CERTIFICATE-----\n... (certificate data) ...\n-----END CERTIFICATE-----',
  6. };
  7. const caCert:networkSecurity.CertBlob = {
  8. type: networkSecurity.CertType.CERT_TYPE_PEM,
  9. data: '-----BEGIN CERTIFICATE-----\n... (CA certificate data) ...\n-----END CERTIFICATE-----',
  10. };
  11. // Perform asynchronous certificate verification
  12. networkSecurity.certVerification(cert, caCert)
  13. .then((result) => {
  14. console.info('Certificate verification result:', result);
  15. })
  16. .catch((error: BusinessError) => {
  17. console.error('Certificate verification failed:', error);
  18. });
注意

请务必将示例中的证书数据替换为实际的证书内容。

networkSecurity.certVerificationSync

Phone12+PC/2in113+Tablet12+TV19+Wearable18+

certVerificationSync(cert: CertBlob, caCert?: CertBlob): number

系统将使用证书管理中的预置CA证书和用户安装的CA证书来校验应用传入的证书,使用同步方式返回。

系统能力:SystemCapability.Communication.NetStack

参数

展开
参数名 类型 必填 说明
cert CertBlob 被校验的证书。
caCert CertBlob 传入自定义的CA证书。

返回值:

展开
类型 说明
number 表示证书验证的结果。如果证书验证成功,则返回0; 否则验证失败。

错误码:

以下错误码的详细介绍请参见网络安全校验错误码通用错误码

展开
错误码ID 错误信息
401 Parameter error.
2305001 Unspecified error.
2305002 Unable to get issuer certificate.
2305003 Unable to get certificate revocation list (CRL).
2305004 Unable to decrypt certificate signature.
2305005 Unable to decrypt CRL signature.
2305006 Unable to decode issuer public key.
2305007 Certificate signature failure.
2305008 CRL signature failure.
2305009 Certificate is not yet valid.
2305010 Certificate has expired.
2305011 CRL is not yet valid.
2305012 CRL has expired.
2305018

Self-signed certificate.

适用版本:12+

2305023 Certificate has been revoked.
2305024 Invalid certificate authority (CA).
2305027 Certificate is untrusted.
2305069

Invalid certificate verification context.

适用版本:12+

说明

这些错误代码对应于证书验证过程中的各种失败。

示例:

收起
自动换行
深色代码主题
复制
  1. import { networkSecurity } from '@kit.NetworkKit';
  2. // Create certificate blobs
  3. const cert: networkSecurity.CertBlob = {
  4. type: networkSecurity.CertType.CERT_TYPE_PEM,
  5. data: '-----BEGIN CERTIFICATE-----\n...'
  6. };
  7. const caCert: networkSecurity.CertBlob = {
  8. type: networkSecurity.CertType.CERT_TYPE_PEM,
  9. data: '-----BEGIN CERTIFICATE-----\n...'
  10. };
  11. // Asynchronous verification
  12. networkSecurity.certVerification(cert, caCert)
  13. .then((result) => {
  14. console.info('Verification Result:', result);
  15. })
  16. .catch((error: BusinessError) => {
  17. console.error('Verification Error:', error);
  18. });
  19. // Synchronous verification
  20. let resultSync: number = networkSecurity.certVerificationSync(cert, caCert);
  21. console.info('Synchronous Verification Result:', resultSync);
注意

请务必将示例中的证书数据替换为实际的证书内容。

networkSecurity.verifyCertChain

Phone26.0.0+PC/2in126.0.0+Tablet26.0.0+TV26.0.0+Wearable26.0.0+

verifyCertChain(cert: CertBlob[], caCert?: CertBlob, hostname?: string): Promise<CertBlob[]>

传入证书链数组,进行证书链校验并构建排序后的证书链。系统将使用证书管理中的预置CA证书和用户安装的CA证书来配合校验传入的证书。使用promise异步回调。

起始版本: 26.0.0

系统能力:SystemCapability.Communication.NetStack

模型约束: 此接口仅可在Stage模型下使用。

参数

展开
参数名 类型 必填 说明
cert CertBlob[] 待校验证书数组。第一个元素必须是叶子证书(end-entity certificate),其余元素为中间证书。
caCert CertBlob 传入自定义的CA证书。不传入则使用系统预置CA证书。
hostname string 需要验证的主机名,用于校验证书中的主机名是否匹配。不传入则跳过主机名验证。

返回值:

展开
类型 说明
Promise<CertBlob[]> 以promise形式返回排序后的证书链数组,顺序为从叶子节点到根节点。

错误码:

以下错误码的详细介绍请参见网络安全校验错误码通用错误码

展开
错误码ID 错误信息
2305001 Unspecified error.
2305002 Unable to get issuer certificate.
2305004 Unable to decrypt certificate signature.
2305006 Unable to decode issuer public key.
2305007 Certificate signature failure.
2305009 Certificate is not yet valid.
2305010 Certificate has expired.
2305018 Self-signed certificate.
2305024 Invalid certificate authority (CA).
2305027 Certificate is untrusted.
2305062 Invalid hostname.
2305069 Invalid certificate verification context.
说明

这些错误代码对应于证书验证过程中的各种失败。

示例:

收起
自动换行
深色代码主题
复制
  1. import { networkSecurity } from '@kit.NetworkKit';
  2. import { BusinessError } from '@kit.BasicServicesKit';
  3. // Define certificate blobs
  4. const cert1: networkSecurity.CertBlob = {
  5. type: networkSecurity.CertType.CERT_TYPE_PEM,
  6. data: '-----BEGIN CERTIFICATE-----\n... (server certificate) ...\n-----END CERTIFICATE-----',
  7. };
  8. const cert2: networkSecurity.CertBlob = {
  9. type: networkSecurity.CertType.CERT_TYPE_PEM,
  10. data: '-----BEGIN CERTIFICATE-----\n... (intermediate certificate) ...\n-----END CERTIFICATE-----',
  11. };
  12. const caCert: networkSecurity.CertBlob = {
  13. type: networkSecurity.CertType.CERT_TYPE_PEM,
  14. data: '-----BEGIN CERTIFICATE-----\n... (CA certificate) ...\n-----END CERTIFICATE-----',
  15. };
  16. // Verify and build sorted cert chain
  17. networkSecurity.verifyCertChain([cert1, cert2], caCert, "example.com")
  18. .then((sortedChain: Array<networkSecurity.CertBlob>) => {
  19. console.info('Certificate chain verified and sorted, chain length:', sortedChain.length);
  20. for (let i = 0; i < sortedChain.length; i++) {
  21. console.info(`Certificate ${i}: type=${sortedChain[i].type}, data=${sortedChain[i].data}`);
  22. }
  23. })
  24. .catch((error: BusinessError) => {
  25. console.error('Certificate chain verification failed:', error);
  26. });
注意

请务必将示例中的证书数据替换为实际的证书内容。

networkSecurity.isCleartextPermitted18+

Phone18+PC/2in118+Tablet18+TV19+Wearable18+

isCleartextPermitted(): boolean

从应用预置network_config.json文件中获取整体明文HTTP是否允许信息,默认允许明文HTTP访问。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

返回值:

展开
类型 说明
boolean 整体明文HTTP是否允许。返回true表示允许访问明文HTTP,false表示不允许。默认返回true。

错误码:

以下错误码的详细介绍请参见通用错误码

展开
错误码ID 错误信息
201 Permission denied.

示例:

收起
自动换行
深色代码主题
复制
  1. import { networkSecurity } from '@kit.NetworkKit';
  2. try {
  3. let result: boolean = networkSecurity.isCleartextPermitted();
  4. console.info(`isCleartextPermitted Result: ${JSON.stringify(result)}`);
  5. } catch (error) {
  6. console.error(`isCleartextPermitted Error: ${JSON.stringify(error)}`);
  7. }

networkSecurity.isCleartextPermittedByHostName18+

Phone18+PC/2in118+Tablet18+TV19+Wearable18+

isCleartextPermittedByHostName(hostName: string): boolean

从应用预置network_config.json文件中获取按域名明文HTTP是否允许信息,默认允许明文HTTP访问。

需要权限:ohos.permission.INTERNET

系统能力:SystemCapability.Communication.NetStack

参数

展开
参数名 类型 必填 说明
hostName string 需要查询的主机名。

返回值:

展开
类型 说明
boolean 按域名明文HTTP是否允许。返回true表示允许明文HTTP访问该主机,false表示不允许。默认返回true。

错误码:

以下错误码的详细介绍请参见通用错误码

展开
错误码ID 错误信息
201 Permission denied.

示例:

收起
自动换行
深色代码主题
复制
  1. import { networkSecurity } from '@kit.NetworkKit';
  2. try {
  3. let result: boolean = networkSecurity.isCleartextPermittedByHostName("xxx");
  4. console.info(`isCleartextPermitted Result: ${JSON.stringify(result)}`);
  5. } catch (error) {
  6. console.error(`isCleartextPermitted Error: ${JSON.stringify(error)}`);
  7. }
在 API参考 中进行搜索
请输入您想要搜索的关键词