uniapp ios 使用https自签证书如何配置

在uniapp开发中,iOS端使用HTTPS自签证书时应该如何配置?我尝试在manifest.json中配置了证书,但在iOS真机上仍然报证书不受信任的错误。需要具体配置步骤和注意事项,包括是否需要额外处理iOS的ATS安全策略?

2 回复

在uniapp的manifest.json中,配置iOS平台允许不验证SSL证书:
"ios" : { "security" : { "privateKey" : false } }
但自签证书仍可能被系统拦截,建议使用受信任的CA证书。


在 UniApp 中,iOS 平台使用 HTTPS 自签证书时,由于 iOS 系统对证书安全要求严格,默认会拒绝自签证书。以下是配置步骤和注意事项:

1. 服务器端配置

  • 确保自签证书有效,且包含正确的域名或 IP 地址。
  • 证书格式需为 .crt.pem,并包含完整的证书链(如适用)。

2. UniApp 网络请求配置

在发送 HTTPS 请求时,需在请求配置中忽略证书验证(仅限开发测试环境,生产环境不推荐):

uni.request({
  url: 'https://your-domain.com/api',
  method: 'GET',
  sslVerify: false, // 关闭 SSL 证书验证(仅开发用)
  success: (res) => {
    console.log('请求成功:', res.data);
  },
  fail: (err) => {
    console.error('请求失败:', err);
  }
});

注意: sslVerify: false 仅在部分平台有效,iOS 可能仍需额外处理。

3. iOS 原生配置(必要步骤)

iOS 系统强制验证证书,需在原生工程中配置:

  • 修改 Info.plist:添加以下内容允许任意负载:
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
    
  • 局限性:此方法仅适用于开发阶段,App Store 审核可能拒绝此配置。

4. 生产环境建议

  • 避免自签证书:使用受信任的 CA 机构(如 Let’s Encrypt)签发免费证书。
  • 域名备案:确保域名解析正常且支持 HTTPS。

总结

  • 开发阶段可通过 sslVerify: false 和修改 Info.plist 临时解决。
  • 生产环境必须使用可信证书,否则 iOS 会阻断请求。
  • 若需严格安全,考虑在服务端部署合法证书。

如有更多问题,可参考 UniApp 官方文档或 iOS 开发指南。

回到顶部