You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ionic3中使用@ionic-native http实现SSL固定报错求助

Ionic3 SSL固定报错:"You must add at least 1 certificate in order to pin to certificates" 解决

嘿,我之前也踩过这个坑!你现在的问题很直观——你只打开了SSL固定的开关,但完全没告诉插件要使用哪张证书啊!

@ionic-native/http(底层依赖cordova-plugin-advanced-http)的SSL固定逻辑是这样的:必须先明确指定要固定的证书文件,插件才知道去assets文件夹里加载它。光调用enableSSLPinning(true),插件根本找不到要验证的证书源,自然就抛出这个提示了。

修复步骤:

  1. 确认你放在platforms/android/assets下的证书文件名(比如是my-server-cert.cer),注意大小写——Android文件系统是区分大小写的!
  2. 在启用SSL固定之前,调用setSSLCertificates方法指定证书文件(如果有多个可信证书,可以传入数组)。

修改后的代码示例:

private getHtpRequest(url: string){
  return new Promise((resolve, reject) => {
    // 第一步:指定assets目录下的证书文件名
    this.htp.setSSLCertificates('my-server-cert.cer');
    // 第二步:启用SSL固定
    this.htp.enableSSLPinning(true);
    
    this.htp.post(url, {}, {
      'Content-Type': 'application/json',
      'reqId': Math.floor((Math.random() * 1000000) + 1).toString()
    })
    .then( (res: any) => {
      this.results = res.json();
      resolve(this.results)
    }, (error: any) => {
      reject(error)
    })
  });
}

额外注意点:

  • 如果是iOS平台,证书要放到platforms/ios/[你的项目名称]/Resources目录下,代码里同样用setSSLCertificates指定文件名即可
  • 如果你用的是较旧版本的cordova-plugin-advanced-http,可能方法名是setCertificate而非setSSLCertificates,可以核对下插件版本的文档
  • 确保证书文件本身有效,要是标准的PEM格式.cer文件,别搞错了证书格式

内容的提问来源于stack exchange,提问作者vishnu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:00:57