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

移动数据访问网站出现ERR_SSL_PROTOCOL_ERROR问题求助

问题:移动数据下调用API出现ERR_SSL_PROTOCOL_ERROR,WiFi环境正常

我用Python-Flask搭建了API服务,部署在AWS EC2的子域名api.example.com上,安装了Let's Encrypt Certbot通配符证书(CN为*.example.com)。React应用部署在另一台服务器的example.com域名下,访问https://www.example.com时调用该API,WiFi环境下运行正常,但使用移动数据时出现ERR_SSL_PROTOCOL_ERROR错误。

我的Nginx配置文件如下:

server {
        listen [::]:443 ssl ipv6only=on; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        
        server_name api.example.com;

    
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        
        ssl_session_timeout 10m;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';

        # HSTS (optional)
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;


        location / {
            proxy_pass http://127.0.0.1:5000;               
            add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
            #add_header Access-Control-Allow-Headers "Authorization, Origin, X-Requested-With, Content-Type, Accept";
            add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

            add_header Access-Control-Allow-Credentials 'true';

    
        }
    }

可能的原因及解决步骤

1. IPv6兼容性问题

移动网络对IPv6的支持可能存在差异,配置中监听了IPv6的443端口,但部分运营商的IPv6路由或解析存在故障。

  • 临时测试:注释掉listen [::]:443 ssl ipv6only=on;这一行,重启Nginx后用移动数据验证是否恢复正常。
  • 长期处理:
    • 检查EC2实例的IPv6配置,确保安全组、路由表已开放IPv6的443端口
    • 若IPv6不是必须,可直接禁用IPv6监听,仅保留listen 443 ssl;

2. 移动运营商SSL拦截/缓存

部分移动运营商会对HTTPS流量做中间拦截,导致证书验证失败或协议不兼容。

  • 验证方法:用移动数据直接访问https://api.example.com,查看浏览器显示的证书是否为Let's Encrypt官方证书,若显示运营商证书则说明存在拦截。
  • 解决方法:
    • 修复HSTS配置中的转义问题:将"替换为双引号",确保浏览器能正确识别强制HTTPS规则:
      add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
      
    • 调整加密套件:在现有套件基础上添加少量兼容移动设备的安全套件(如AES128-SHA256),平衡兼容性与安全性
    • 本地执行openssl s_client -connect api.example.com:443,检查SSL握手过程是否存在异常

3. DNS解析异常

移动数据的DNS服务器可能未正确解析api.example.com,或缓存了旧的IP记录。

  • 验证方法:在移动设备终端执行nslookup api.example.com,对比WiFi环境下的解析IP是否一致。
  • 解决方法:
    • 检查域名DNS记录(如Route53),确保A/AAAA记录指向正确的EC2实例IP,将TTL设置为300秒加速缓存更新
    • 若使用第三方DNS服务,确认服务状态正常,无解析延迟

4. Nginx配置细节问题

  • 证书权限检查:确认/etc/letsencrypt/live/example.com/下的证书文件存在,且Nginx进程拥有读取权限
  • 完善CORS配置:针对OPTIONS请求单独处理,避免移动数据下预请求失败,修改location块如下:
    location / {
        if ($request_method = OPTIONS) {
            add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
            add_header Access-Control-Allow-Headers "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type";
            add_header Access-Control-Allow-Credentials "true";
            add_header Access-Control-Allow-Origin "https://www.example.com";
            add_header Content-Length 0;
            add_header Content-Type text/plain;
            return 204;
        }
        proxy_pass http://127.0.0.1:5000;
        add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        add_header Access-Control-Allow-Credentials 'true';
        add_header Access-Control-Allow-Origin "https://www.example.com";
    }
    
    注意:开启Access-Control-Allow-Credentials时,Access-Control-Allow-Origin必须指定明确域名,不能用通配符

5. AWS网络规则限制

移动数据的IP范围可能未被EC2安全组或网络ACL允许访问443端口。

  • 检查安全组入站规则:确保允许0.0.0.0/0访问443(HTTPS)端口
  • 检查网络ACL:确认入站、出站规则均允许443端口流量通行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 10:33:24