• Lv0
    粉丝0

积分12 / 贡献0

提问2答案被采纳0文章0

作者动态

Axios客户端证书相关问题

爱情买卖 显示全部楼层 发表于 2023-12-28 08:45:05

咨询描述:

  1. 我们这边目前有证书和密码,但是没有证书私钥,就是提到的keyPath,keyPath可以不填吗? 跟我们这边同事了解 p12证书是包含密钥的。
  2. 目前将证书放在resources/rawfile文件资源下(附件中有截图),context.filesDir + '/ysdq_client__client@aggrx.com_\_100year.p12'填写证书目录正确吗?
  3. 目前使用报错了,错误信息 Problem with the local SSL certificate。

image5.png

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论3

马迪

沙发 发表于 2023-12-28 10:21:14
1.看了axios的https://gitee.com/openharmony-sig/ohos_axios/blob/master/CHANGELOG.md,从v2.2.0-rc.0版本后才补充了本地证书和CA证书的功能

2.如果是放resources/rawfile ,还需要拷贝到context.filesDir 后(比如在abouttoappear阶段),再传给axios.  这个当前是不太方便,已经提给网络子系统看看是否可以优化,或者后续在 axios里优化

  1.   caPath:string = ""

  2.   async aboutToAppear(){
  3.     this.caPath = getContext().filesDir + "/Desktop.pem"
  4.     let ca: Uint8Array = await getContext().resourceManager.getRawFileContent("Desktop.pem");
  5.     if (ca != null) {
  6.       let file = fs.openSync(this.caPath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  7.       fs.writeSync(file.fd, ca.buffer);
  8.       fs.fsyncSync(file.fd);
  9.       fs.closeSync(file);
  10.       console.info("copycopycopycopycopy");
  11.     }
  12.   }
复制代码


  1.     axios.get<string, AxiosResponse<string>, null>(this.getUrl,{
  2.      caPath: this.caPath, //ca证书路径
  3.     }).then((res: AxiosResponse) => {
  4.       this.status = res ? res.status : '';
  5.       this.message = res ? JSON.stringify(res.data) : '';
  6.     }).catch((err: AxiosError) => {
  7.       this.status = ''
  8.       this.message = err.message;
  9.     })
复制代码

爱情买卖

发表于 2023-12-28 12:48  IP属地: - 中国广东省佛山市 中国电信IDC

回复 马迪: 马老师你好 还想请问是在这种请求方式下  
clientCert: {
        certPath: '', //客户端证书路径
        certType: 'p12', // 客户端证书类型
        keyPath: '', //客户端私钥路径
        keyPasswd: '' // 密码
      }
里的 keyPath是可以不用填了吗

马迪

发表于 2023-12-28 14:12  IP属地: - 中国江苏省扬州市 中国电信IDC

回复 爱情买卖: 对应http的最新接口,要看客户端证书是否有key和path:
https://gitee.com/openharmony/do ... ity/http-request.md

  1. clientCert: { // 可选,默认不使用客户端证书,自API 11开始支持该属性
  2.       certPath: '/path/to/client.pem', // 默认不使用客户端证书,自API 11开始支持该属性
  3.       keyPath: '/path/to/client.key', // 若证书包含Key信息,传入空字符串,自API 11开始支持该属性
  4.       certType: http.CertType.PEM, // 可选,默认使用PEM,自API 11开始支持该属性
  5.       keyPassword: "passwordToKey" // 可选,输入key文件的密码,自API 11开始支持该属性
  6.     },
复制代码


我看是OpenHarmony最新master分支才有这个能力,API11的,所以上面的问题很有可能是4.0,4.1的版本还没包括这个特性

【2 条回复】

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部