0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

HarmonyOS应用网络连接安全配置方案

HarmonyOS开发者 来源:HarmonyOS开发者 2025-10-24 14:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

应用与服务器之间的数据传输需确保安全,保护数据的机密性和完整性,防止敏感数据被窃取和篡改。推荐使用传输层安全协议(TLS)保护数据安全。

当应用通过HTTPS访问云侧服务器时,如果信任了用户安装的CA证书,用户可以通过网络代理工具(如Fiddler、Charles)对HTTPS消息进行中间人攻击,如查看、篡改请求和响应消息,这可能导致应用或云侧服务器产生安全风险。因此,通过HTTPS访问云侧服务器时,应配置CA证书进行合法性校验。

本文介绍如何配置CA证书以进行合法性校验,避免应用或云侧服务器的安全风险。

af8c6252-ab44-11f0-8c8f-92fbcf53809c.png

配置CA证书对服务器进行合法性校验

当应用通过TLS协议连接服务器时,服务器会提供证书链来证明其身份,应用需要使用可信的CA(证书颁发机构)证书对服务器证书链进行合法性校验。

服务器根据场景使用不同类型的CA颁发的证书链:

权威CA证书,如CFCA、GlobalSign CA机构的根CA证书,满足业界管理规范并通过审计认证,可信度高。

企业自建的CA证书,用于企业内部服务器的证书链。企业内部应用直接信任此类CA证书。

系统提供3种CA证书管理方式:

系统预置CA证书:系统预置了业界主流的权威CA证书。

应用管理的CA证书:应用可在Hap内预置可信的CA证书,如企业内部自建的CA证书。

用户安装的CA证书:通过系统设置界面安装的私有CA证书。这类证书可信度较低,可能被用于中间人攻击。

开发者应结合应用的业务场景,在不影响业务功能的前提下,合理设置可信CA证书的范围:

面向互联网用户的应用,建议只配置信任系统预置的CA证书(https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-network-ca-security#section121091116142117)。

只访问企业内部服务器的应用,建议只配置信任应用管理的CA证书(https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-network-ca-security#section05271716102218)。

同时访问企业内部服务器和互联网服务的应用,建议根据访问的服务器域名分别配置信任系统预置的CA证书(https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-network-ca-security#section121091116142117)或应用管理的CA证书(https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-network-ca-security#section05271716102218)。

应用开发和调测过程中需要进行网络抓包以定位问题和测试,建议仅在调测版本配置信任用户安装的CA证书(https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-network-ca-security#section12518142215236)。

应用需支持通过企业代理服务器访问应用服务器,可信任企业MDM系统或设备管理员用户手动安装CA证书(https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-network-ca-security#section12518142215236)。然而,设备管理员用户可能通过代理工具抓取应用网络数据,建议在应用层实施安全防护,如对敏感数据进行二次加密或签名。

对于需要较高网络安全的应用(如金融支付、银行类应用),配置CA证书后,通过SSL Pinning方式(https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-network-ca-security#section4337175511234)绑定服务器证书的公钥,以增强安全性。

网络连接安全配置

配置信任系统预置的CA证书

如果应用使用第三方库进行网络连接,需要手动设置系统预置的CA证书路径:/etc/security/certificates。

示例:

使用三方库curl进行HTTPS连接,通过下面代码设置信任的CA证书路径:

curl_easy_setopt(curl, CURLOPT_CATH,"/etc/security/certificates");

配置不信任用户安装的CA证书

Network Kit和Remote Communication Kit配置不信任用户安装的CA证书:在src/main/resources/base/profile/network_config.json配置文件(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/http-request#%E9%85%8D%E7%BD%AE%E8%AF%81%E4%B9%A6%E6%A0%A1%E9%AA%8C)中进行配置。

{
"network-security-config": {
  ... ...
 },
"trust-global-user-ca":false, //Configure whether to trust the CA certificate manually installed by the enterprise MDM system or device administrator. The default value is true
"trust-current-user-ca":false// Configure whether to trust the CA certificate installed by the current user. The default value is true
}

配置信任应用管理的CA证书

如果应用服务器使用企业内部自建的CA证书,可以在Hap包中预置这些CA证书,并配置信任。

Network Kit和Remote Communication Kit可以通过src/main/resources/base/profile/network_config.json文件进行配置。例如,可以将应用级信任的 CA 证书预置到/data/storage/el1/bundle/entry/resources/resfile/appCaCert目录,将特定域名信任的CA 证书预置到/data/storage/el1/bundle/entry/resources/resfile/domainCaCert目录。

{
"network-security-config":{
 "base-config":{
  "trust-anchors":[
   {
    "certificates":"/data/storage/el1/bundle/entry/resources/resfile/appCaCert"
   }
  ]
 },
 "domain-config":[
  {
   "domains":[
    {
     "include-subdomains":true,
     "name":"example.com"
    }
   ],
   "trust-anchors":[
    {
     "certificates":"/data/storage/el1/bundle/entry/resources/resfile/domainCaCert"
    }
   ]
  }
 ]
}
}
Network Kit也支持在发起HTTPS请求的代码中指定信任的CA证书路径(https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-http#httprequestoptions):
httpRequest.request('EXAMPLE_URL', {
 method: http.RequestMethod.POST,
 header: {
 'Content-Type':'application/json'
 },
 extraData:'data to send',
 expectDataType: http.HttpDataType.STRING,
 connectTimeout:60000,
 caPath:'/data/storage/el1/bundle/entry/resources/resfile/domainCaCert', // Specifies the trusted CA certificate path
}, (err: BusinessError,data: http.HttpResponse) => {
// ...
})
Remote Communication Kit也支持在代码中指定信任的CA证书路径(https://developer.huawei.com/consumer/cn/doc/harmonyos-references/remote-communication-rcp#section1597118916425):
constcaPath: rcp.CertificateAuthority = {
 folderPath:'/data/storage/el1/bundle/entry/resources/resfile/appCaCert',// 指定信任的CA证书路径
}
constsecurityConfig: rcp.SecurityConfiguration = {
 remoteValidation: caPath
};
// Use the security configuration in the session creation
constsessionWithSecurityConfig= rcp.createSession({requestConfiguration: {security: securityConfig } });

说明

系统Network Kit和Remote Communication Kit在完成上述配置后,HTTPS连接仍信任系统预置的CA证书和用户安装的CA证书。如需提升安全性,可配置不信任用户安装的CA证书(https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-network-ca-security#section11935814273)。

如果应用使用三方库进行网络连接,需要在代码中设置应用管理的CA证书路径。例如,使用三方库curl进行HTTPS连接时,可以通过以下代码设置信任的CA证书路径:

curl_easy_setopt(curl, CURLOPT_CATH,"/data/storage/el1/bundle/entry/resources/resfile/domainCaCert");


配置信任用户安装的CA证书

用户安装的CA证书可信度较低,除以下场景外,建议应用不信任用户安装的CA证书:

应用开发和调测过程中需要进行网络抓包以定位问题和测试。用户通过系统的设置界面安装的CA证书,保存在目录:/data/certificates/user_cacerts/{userid},其中 userid 从100开始。

**注意:**在商用发布的应用版本中应该不信任用户安装的CA证书。

面向2B企业应用的场景,应用需支持通过企业代理服务器访问应用服务器。设备需通过企业的MDM系统或设备管理员用户手工安装CA证书,并保存在目录:/data/certificates/user_cacerts/0

配置SSL Pinning证书锁定

应用默认信任系统预置的CA证书。如果预置的CA颁发了不可信证书,应用将面临攻击风险。对于需要高网络安全的应用,如金融支付和银行类应用,可以通过配置SSL Pinning证书锁定方式,仅信任指定服务器证书的公钥。

配置SSL Pinning支持两种方式。如果服务器域名固定,建议采用静态SSL Pinning。否则,采用动态SSL Pinning。

说明

SSL Pinning要求应用云侧服务器证书的公钥不能变化。如果公钥发生变化,需要修改应用内配置的证书公钥,否则应用的网络连接将失败。因此,建议SSL Pinning配置始终包含至少一个备用公钥。
应用还可以设置SSL Pinning的到期时间。到期后,证书将不再被锁定,这有助于在服务器证书公钥变化时防止尚未更新的应用出现连接问题。然而,设置SSL Pinning的到期时间可能会使攻击者绕过证书锁定。
请开发者评估并决定是否配置安全风险和SSL Pinning的限制约束。如果应用在应用层对敏感信息进行了加密或签名,则安全风险较低。

1. 通过network_config.json文件进行静态SSL Pinning配置:

{
"network-security-config":{
 "domain-config":[
  {
   "domains":[
    {
     "include-subdomains":true,
     "name":"server.com"
    }
   ],
   "pin-set":{
    "expiration":"2024-11-08",
    "pin":[
     {
      "digest-algorithm":"sha256",
      "digest":"g8CsdcpyAKxmLoWFvMd2hC7ZDUy7L4E2NYOi1i8qEtE="// Hash of the server certificate public key
     }
    ]
   }
  }
 ]
}
}
具体可参考配置指导的“预置锁定证书PIN”章节(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/http-request#%E8%AF%81%E4%B9%A6%E9%94%81%E5%AE%9A)。

2. 通过在代码中动态设置进行动态SSL Pinning配置:

· Network Kit配置动态SSL Pinning:

certificatePinning: [//Optional, supports dynamic setting of certificate lock configuration information. This property is supported since API 12
 {
  publicKeyHash:'g8CsdcpyAKxmLoWFvMd2hC7ZDUy7L4E2NYOi1i8qEtE=',// Hash of the server certificate public key
  hashAlgorithm:'SHA-256'
  }, {
  publicKeyHash:'MGFiY2UyMDk5ZjEyMzI3MWQ4MDMyY2E4ODEzMmY3EtE=',// Hash of the secondary public key of the server certificate
  hashAlgorithm:'SHA-256'
 }
]
具体可参考配置指导的“certificatePinning”参数说明(https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-http#httprequestoptions)。
· Remote Communication Kit配置动态SSL Pinning:
constkeyHash:string='g8CsdcpyAKxmLoWFvMd2hC7ZDUy7L4E2NYOi1i8qEtE=';// Public key of the server certificate
constsession = rcp.createSession();
constrequest =newrcp.Request(HTTP_SERVER);
constpin: rcp.CertificatePinning = {
 kind:'public-key',
 publicKeyHash: keyHash,
 hashAlgorithm:'SHA-256'
};
request.configuration = {
 security: {
  certificatePinning: pin,
 }
};
constresp =awaitsession.fetch(request);
具体可参考配置指导的“certificatePinning”参数说明。
(https://developer.huawei.com/consumer/cn/doc/harmonyos-references/remote-communication-rcp#section1597118916425)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    14

    文章

    10467

    浏览量

    91896
  • 网络安全
    +关注

    关注

    11

    文章

    3543

    浏览量

    63660
  • HarmonyOS
    +关注

    关注

    80

    文章

    2157

    浏览量

    36498

原文标题:HarmonyOS应用网络连接安全配置方案

文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于网络连接问题

    新买的宏基 Aspira iv 5本子,无法新建网络连接。它的网络接口是用扩展器扩展出来的。新建网络连接时显示的是window无法检测到调制解调器。网卡的驱动已经重新下载过了,正常运行。和猫
    发表于 05-24 15:02

    便携数据库管理系统的网络连接安全,不看肯定后悔

    本文介绍掌上电脑无线网络配置,涉及PocketDBA应用程序的组成、Web裁剪技术、通信协议、无线网络连接的相关设备及其功能;PocketDBAw使用时安全设置,包括数据的机密性、完整
    发表于 06-04 07:01

    下载HarmonyOS SDK时,提示网络连接错误的解决办法

    网络连接正常,下载HarmonyOS SDK时,却提示网络连接错误。解决措施可能因为区域是修改前PC的系统语言,区域是修改密码。在 C:Users username
    发表于 04-13 10:52

    基于802.1X 的可信网络连接技术

    网络访问控制技术能有效防止不安全终端对网络的威胁。该文介绍网络访问控制技术的研究现状,针对其实现中存在的问题,提出基于802.1X 的可信网络连接
    发表于 03-20 15:48 13次下载

    便携数据库管理系统的网络连接安全

    介绍掌上电脑无线网络配置, 涉及PocketDBA 应用程序的组成、Web 裁剪技术、通信协议、无线网络连接的相关设备及其功能;PocketDBA使用时安全设置,包括数据的机密性、完整
    发表于 04-16 11:06 18次下载

    便携数据库管理系统的网络连接安全

    介绍掌上电脑无线网络配置, 涉及PocketDBA 应用程序的组成、Web 裁剪技术、通信协议、无线网络连接的相关设备及其功能;PocketDBA使用时安全设置,包括数据的机密性、完整
    发表于 05-14 15:52 14次下载

    基于可信网络连接安全接入技术

    网络访问控制中,验证终端实体的完整性状态,对于网络安全具有十分重要的意义。而传统的网络安全解决方案对此却无能为力。利用可信网络连接技术,可
    发表于 08-25 08:40 10次下载

    网络连接技术

    网络连接技术 网络连接技术用于连接外围设备到计算机、计算机到计算机、计算机到网络设备、网络设备到网络
    发表于 03-20 16:05 1485次阅读

    网络连接存储器,什么是网络连接存储器

    网络连接存储器,什么是网络连接存储器 NAS是一种直接挂接到网络中的存储设备,其允许客户机访问存储器,就像存储器直接与它们的系
    发表于 04-06 09:55 1466次阅读

    Linux教程之如何配置网络连接的资料概述

    本文档的主要内容详细介绍的是Linux教程之如何配置网络连接的资料概述学习目标:● 学会使用网络管理工具配置网络连接● 熟悉使用KPPP
    发表于 11-09 17:42 17次下载
    Linux教程之如何<b class='flag-5'>配置</b><b class='flag-5'>网络连接</b>的资料概述

    面向EtherCAT运动控制应用的网络连接解决方案

    面向EtherCAT运动控制应用的网络连接解决方案。通过我们的混合信号运动控制处理解决方案,了解实时、多协议网络交换技术。这将针对工业伺服和机器人应用。
    的头像 发表于 06-17 06:14 4750次阅读

    TogetherROS系统中如何配置网络连接

    无论是旭日X3派,还是TogetherROS,在正式使用之前,都还需要进行一些必要的配置,完善必要的功能模块,提供完整的算力支持,达到最佳状态。 网络连接 第一个配置,是无线网络连接
    的头像 发表于 12-01 15:39 1266次阅读
    TogetherROS系统中如何<b class='flag-5'>配置</b><b class='flag-5'>网络连接</b>

    如何解决Linux系统中的网络连接问题?

    如何解决Linux系统中的网络连接问题? Linux系统中的网络连接问题是常见的技术难题之一,通常涉及在Linux上配置网络接口、解决网络
    的头像 发表于 01-12 15:17 2488次阅读

    住宅动态IP:网络连接的灵活新选择

    住宅动态IP作为一种新兴的网络配置方式,正逐渐成为网络连接的一个灵活新选择。
    的头像 发表于 10-21 07:53 1230次阅读

    海外静态IP:为企业打造安全稳定的网络连接

    海外静态IP对于企业而言,是构建安全稳定网络连接的重要基石。
    的头像 发表于 11-16 16:40 1474次阅读