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

树莓派上React+Spring Boot+NGINX的HTTPS SSL证书故障排查

解决HTTPS部署的SSL证书及握手错误问题

一、处理调试工具提示的"self-signed certificate"错误

自签名证书本身不被浏览器、API调试工具信任,这是预期行为,分场景处理:

  • 调试工具临时绕过:在Postman的「Settings > General」里关闭「SSL certificate verification」;Insomnia在「Preferences > SSL」里勾选「Disable SSL validation」。注意这仅适合开发调试,生产环境禁用此操作。
  • React开发环境适配:本地React项目调用HTTPS接口时,修改package.json的启动命令,添加忽略证书参数:
    "start": "HTTPS=true NODE_TLS_REJECT_UNAUTHORIZED=0 react-scripts start"
    

二、解决Spring Boot的"Insufficient buffer remaining for AEAD cipher fragment"握手错误

这个错误多与SSL配置冲突或证书参数有关,按以下步骤排查:

  1. 取消重复SSL配置:你已经用NGINX做反向代理,无需在Spring Boot中再配置SSL。注释掉application.properties里的SSL相关配置:
    # server.ssl.key-store=xxx
    # server.ssl.key-store-password=xxx
    # server.ssl.key-alias=xxx
    
    让NGINX单独处理HTTPS,后端Spring Boot通过HTTP与NGINX通信,这是更常规的部署方式,可避免双重SSL握手问题。
  2. 若必须Spring Boot处理SSL:确认证书为PKCS12格式(Spring Boot推荐),并配置兼容AEAD算法的Cipher Suites:
    server.ssl.ciphers=TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_GCM_SHA256
    
    同时确保证书密钥长度在2048位以上,若不符合则重新生成证书。

三、生产环境最优方案:使用Let's Encrypt可信免费证书

自签名证书在生产环境始终存在信任问题,建议用Let's Encrypt生成可信证书:

  1. 在树莓派安装Certbot并申请证书:
    sudo apt-get install certbot python3-certbot-nginx
    sudo certbot --nginx -d owt-api.quentingenet.fr
    
    Certbot会自动配置NGINX的SSL参数及证书自动续期。
  2. 确认NGINX转发配置正确,将HTTPS请求转到Spring Boot的HTTP端口(如8080):
    server {
        listen 443 ssl;
        server_name owt-api.quentingenet.fr;
    
        ssl_certificate /etc/letsencrypt/live/owt-api.quentingenet.fr/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/owt-api.quentingenet.fr/privkey.pem;
    
        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
    # 强制HTTP跳转HTTPS
    server {
        listen 80;
        server_name owt-api.quentingenet.fr;
        return 301 https://$host$request_uri;
    }
    
  3. Spring Boot添加反向代理识别配置,让服务正确识别真实请求协议:
    server.forward-headers-strategy=NATIVE
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:13:09