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

部署在AWS ECS的Nginx TLSv1.3未返回close_notify问题咨询

解决Nginx在TLSv1.3下发送close_notify的配置方案及回归测试清单

一、Nginx配置修改方案

针对TLSv1.3下Nginx未发送close_notify的问题,可通过以下配置调整强制触发该报文:

关键配置项说明

  1. 开启close_notify强制发送:添加ssl_send_close_notify on;指令(Nginx 1.19.8及以上版本支持),该配置会让Nginx在关闭任何TLS版本的连接时,主动发送close_notify告警。
  2. 优化上游连接管理:确保Nginx与上游应用的连接关闭流程合规,避免提前断开TLS连接:
    • 启用HTTP/1.1长连接,避免短连接导致的异常关闭;
    • 配置合理的超时时间,减少因超时触发的强制断开。

修改后的完整配置示例

server {
    listen 443 ssl;
    server_name $mtls;
    access_log /dev/stdout main;
    ssl_certificate "/etc/nginx/${mtls}.crt";
    ssl_certificate_key "/etc/nginx/${mtls}.key";

    ssl_client_certificate  "/etc/nginx/ca.crt";

    ssl_prefer_server_ciphers ${ssl_ciphers_flag};
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_verify_client on;
    ssl_verify_depth 2;
    ssl_dhparam "/etc/nginx/dhparam.pem";
    ssl_ciphers ${ssl_ciphers_list};
    ssl_buffer_size 8k;
    # 强制发送close_notify报文
    ssl_send_close_notify on;

    location / {
        # 启用HTTP/1.1长连接
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_ssl_server_name on;
        proxy_set_header        Client_Hostname ${ssl_server_name};
        proxy_set_header        Cert_Thumbprint ${san};
        proxy_set_header        Host ${ssl_server_name};
        proxy_set_header        x-apigw-api-id ${mtls_apigateway_id};
        # 配置超时时间,避免意外断开
        proxy_connect_timeout 30s;
        proxy_send_timeout 30s;
        proxy_read_timeout 60s;
        proxy_pass https://${vpc_endpoint_dns}/${DEPLOY_ENV}/;
    }
}

二、回归测试清单

修改配置后需覆盖以下测试场景,确保业务兼容性与配置有效性:

  • TLSv1.3连接关闭验证
    • 使用OpenSSL 3.x客户端执行命令:openssl s_client -connect your-domain:443 -tls1_3,发起请求后主动关闭连接,抓包确认Nginx发送了close_notify报文;
    • 检查客户端日志,确认不再出现"意外EOF"类错误。
  • TLSv1.2兼容性验证
    • 使用OpenSSL 1.x客户端执行命令:openssl s_client -connect your-domain:443 -tls1_2,验证连接关闭时close_notify正常发送,原有业务逻辑无异常。
  • 核心业务功能测试
    • 覆盖所有核心API接口的正常请求、参数错误、权限拒绝等场景,验证返回结果符合预期,无连接中断导致的异常。
  • 长连接场景测试
    • 模拟客户端保持长连接并发起多次请求,验证连接正常复用,最终关闭时close_notify正常发送,无资源泄漏。
  • 超时场景测试
    • 模拟上游服务响应超时,验证Nginx按配置超时时间处理连接,关闭时仍发送close_notify,客户端无意外EOF报错。
  • MTLS身份认证验证
    • 携带合法/非法客户端证书发起请求,验证身份认证流程正常,连接关闭不受MTLS配置影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 09:44:53