React Native Expo调用自签名证书HTTPS Node.js服务网络错误求解
解决方案
本地开发场景
方法一:安装证书到安卓系统信任库
- 将你生成的自签名证书
certificate.pem后缀修改为.crt - 发送文件到安卓真机,依次打开手机设置 > 安全 > 加密与凭据 > 安装证书 > 选择CA证书,选中传入的
.crt文件完成安装 - 重启Expo开发服务与应用后重新发起请求即可
方法二:配置Expo项目信任自定义证书(无需修改系统设置)
- 在Expo项目根目录新建
network_security_config.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="false"> <domain includeSubdomains="true">192.168.1.8</domain> <trust-anchors> <certificates src="@raw/server_cert"/> <certificates src="system"/> </trust-anchors> </domain-config> </network-security-config>
- 打开项目
app.json,新增安卓网络安全配置关联:
{ "expo": { "android": { "networkSecurityConfig": "./network_security_config.xml" } } }
- 在安卓资源目录
res/raw下放入你的证书文件,重命名为server_cert.crt - 重新构建Expo开发客户端后运行即可生效
必查前置项
- 生成自签名证书时必须在
Subject Alternative Name(SAN)字段中添加192.168.1.8,安卓7及以上系统会强制校验SAN字段,仅在通用名(CN)填写IP会被判定为无效证书 - 确保安卓真机与Node服务处于同一局域网,服务器443端口未被防火墙拦截
生产环境方案
不要使用自签名证书,申请公开CA机构签发的免费SSL证书,将服务部署到公网后绑定域名访问,系统默认信任这类证书,不会出现校验失败问题
内容的提问来源于stack exchange,提问作者davide volpini
相关产品推荐
相关产品推荐

