OpenHarmony开发者论坛

标题: Axios客户端证书相关问题 [打印本页]

作者: 17386113703    时间: 2023-12-28 08:45
标题: Axios客户端证书相关问题
[md]咨询描述:

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](https://forums-obs.openharmony.c ... 39xe4kr3gx3x9bx.png "image (5).png")
[/md]
作者: 马迪    时间: 2023-12-28 10:21
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
回复 马迪: 马老师你好 还想请问是在这种请求方式下  
clientCert: {
        certPath: '', //客户端证书路径
        certType: 'p12', // 客户端证书类型
        keyPath: '', //客户端私钥路径
        keyPasswd: '' // 密码
      }
里的 keyPath是可以不用填了吗
作者: 马迪    时间: 2023-12-28 14:12
回复 爱情买卖: 对应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的版本还没包括这个特性




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5