HarmonyOS 鸿蒙Next httpRequest.request 请求https接口ssl证书验证失败

发布于 1周前 作者 nodeper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next httpRequest.request 请求https接口ssl证书验证失败

httpRequest.request 请求https接口ssl证书验证失败

7 回复

问题现象

https接口httpRequest.request请求报错:“SSL peer certificate or SSH remote key was not OK”。

  1. httpRequest.request怎样进行证书验证。
  2. httpRequest.request能否忽略证书认证访问https接口。

解决措施

HTTPS证书是一种数字证书,这种证书的主要作用是保护网站安全性。HTTPS证书校验则是指在建立HTTPS连接时对证书进行校验,保证连接的安全性,使网站的安全性更高。

HTTPS校验主要包括以下几个步骤:

  1. 客户端向服务器发送HTTPS请求
  2. 服务器返回SSL证书
  3. 客户端对证书进行校验
  4. 如果验证通过,客户端和服务器之间就建立起了安全的HTTPS连接。

本题中的报错出现在第三步,即客户端对证书校验报错。

客户端对证书的校验验证SSL证书的四个方面:

  1. 检查SSL证书是否是由浏览器中“受信任的根证书颁发机构”颁发。
  2. 检查SSL证书中的证书吊销列表,检查证书是否被证书颁发机构吊销。
  3. 检查此SSL证书是否过期。
  4. 检查部署此SSL证书校验的网站域名和证书域名是否一致。

客户端如果没有对证书进行校验,就会导致中间人攻击,中间人攻击分两种:SSL劫持和SSL剥离。

SSL劫持原理:第三方攻击者会先把自己接到请求方和接收方之间,然后通过自己伪造的证书先模拟成接收方和请求方交换数据,然后再模拟自己为请求方与接收方进行数据交互。一般SSL劫持容易被用于使用者在自己的浏览器等地方安装了未被权威CA认证的证书,因此需要进行证书校验。

SSL​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​劫持

1.png​​​​​​​

SSL剥离通常发生在HTTP请求中,不过现在的网站大部分强制使用HTTPS访问网站,这里不再赘述。

问题1:开发者应对服务端的证书进行上述四个方面的检查,确认无误。若服务端证书是自定义的CA,即SSL证书不是由浏览器中“受信任的根证书颁发机构”颁发,可以通过使用httpRequest.request接口的HttpRequestOptions参数中的caPath设置自定义CA的路径,如果设置了此参数,系统将使用用户指定路径的CA证书,(开发者需保证该路径下CA证书的可访问性),否则将使用系统预设CA证书,系统预设CA证书位置:/etc/ssl/certs/cacert.pem

问题2:客户端需要对证书进行验证,否则会导致中间人攻击。

参考链接

API参考:HttpRequestOptions

卡在这里了,没有权限查看文档,能再多介绍一下吗?
中间证书颁发机构办法的CA证书,始终是“SSL peer certificate or SSH remote key was not OK”,我把阿里证书chain.crt或public.crt或者合并两个,也试过改名为.pem,放在rawfile目录下,程序启动后复制到沙箱目录,使用capath,仍然报此错误,请大神帮帮忙!

从rawfile复制到沙箱没有问题

请问如何从rawfile复制到沙箱?

同问楼主找到解决方法了吗?

针对HarmonyOS(鸿蒙)系统中httpRequest.request请求HTTPS接口时SSL证书验证失败的问题,首先确认服务器SSL证书是否有效且被信任的CA签发。其次,检查客户端的SSL/TLS配置,确保支持服务器使用的SSL/TLS版本和加密算法。另外,更新鸿蒙系统的SDK和库到最新版本,以支持最新的安全协议和证书格式。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部