HarmonyOS 鸿蒙Next 使用image加载网络图片报错,SSL peer certificate or SSH remote key was not OK
HarmonyOS 鸿蒙Next 使用image加载网络图片报错,SSL peer certificate or SSH remote key was not OK
使用image 加载网络图片报错,用浏览器直接打开正常, 报错提示:
ImageErrorHttp task of url https://testwx.jx-bank.com/jmbank/resource/app3/20240718155653563.png failed, response code 0, msg from netStack: SSL peer certificate or SSH remote key was not OK
尝试用浏览器直接打开https://testwx.jx-bank.com/jmbank/resource/app3/20240718155653563.png 是正常的 有没有方法不修改服务器配置的情况下和不使用网络请求下载图片的情况下,让图片显示正常
可能是证书过期了
http请求使用默认证书验证失败,需要使用服务端证书做单向认证时,采用capath参数字段指定沙箱路径下证书,证书可通过如下方式放入工程机:
(1) 通过 "hdc file send testCert.pem(pc上证书路径) /etc/ssl/certs/testCert.pem(证书默认沙箱路径)"命令上传
(2) 将证书放入项目rawFile文件目录下,使用getRawFileContent读取内容,通过创建文件的方式写入,然后将capath指向当前写入路径
可以参考下面代码结合上面给出的思路:
import fs from '@ohos.file.fs';
getContext(this).resourceManager.getRawFileContent('syscap.pem', (_err, value) => {
let myBuffer:ArrayBufferLike = value.buffer
let context = getContext(this); //沙箱路径
let filePath = context.filesDir + "/syscap.pem";
console.log("testTag-filePath:" + filePath);
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let writeLen = fs.writeSync(file.fd, myBuffer);
console.info("testTag-write data to file succeed and size is:" + writeLen);
fs.closeSync(file);
});
httpRequest.request(
url,
{
method: http.RequestMethod.GET,
caPath : filePath,
connectTimeout: 60000,
readTimeout: 60000,
}
在HarmonyOS鸿蒙Next系统中,当你使用image组件加载网络图片时遇到“SSL peer certificate or SSH remote key was not OK”的错误,这通常意味着SSL证书验证失败。这可能是由于以下几个原因:
-
证书不受信任:所访问的服务器使用的SSL证书可能由不受信任的证书颁发机构签发,或者证书已过期、被撤销。
-
证书链不完整:服务器提供的证书链可能不完整,导致客户端无法验证证书的合法性。
-
配置问题:应用或系统的SSL/TLS配置可能不正确,导致无法正确验证证书。
解决此问题的方法可能包括:
-
检查服务器证书:确保服务器使用的SSL证书是有效的,由受信任的证书颁发机构签发,且未过期或被撤销。
-
完善证书链:确保服务器提供的证书链完整,客户端可以沿着证书链验证到受信任的根证书。
-
调整客户端配置:在客户端(即你的HarmonyOS应用)中,检查并调整SSL/TLS相关的配置,确保可以正确验证服务器证书。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。