如何配置AWS ALB转发SSL证书至启用SSL终止的NGINX?
解决方案:让AWS ALB传递客户端SSL证书到后端NGINX
针对你的问题,有两种可行方案实现保留NGINX层面SSL终止的同时,解决ALB导致的证书传递问题:
方案一:ALB透传SSL流量(推荐)
这种方式下ALB仅做TCP层转发,不终止SSL连接,客户端的SSL请求直接传递到NGINX,完全保留你现有NGINX的SSL终止配置:
- 登录AWS控制台,找到目标ALB,将原有HTTPS监听器修改为TCP协议,监听443端口
- 配置监听器的转发规则,将流量直接转发到NGINX所在目标组的443端口(HTTPS)
- 此方案无需修改NGINX配置,NGINX可正常接收并验证客户端证书
方案二:保留ALB SSL终止,转发客户端证书信息
如果需要ALB继续处理HTTP层功能(如路径路由、WAF集成),可配置ALB将客户端证书通过请求头传递给NGINX,再调整NGINX逻辑验证证书:
配置ALB监听器
- 编辑ALB的HTTPS监听器,在转发到目标组的设置中,勾选「转发客户端证书」选项
- ALB会将客户端证书以Base64编码的PEM格式,通过
X-SSL-CERT请求头发送给NGINX
修改NGINX配置
在NGINX的HTTPS server块中添加以下配置,从请求头提取证书并完成验证:# 保留原有CA证书配置 ssl_client_certificate /path/to/your-ca-cert.pem; ssl_verify_client on; # 从ALB传递的请求头读取客户端证书 set $ssl_client_cert $http_x_ssl_cert; # 验证证书有效性(可选,根据原有逻辑调整) if ($ssl_client_verify != SUCCESS) { return 403; }注意:此时ALB与NGINX之间为HTTP连接,需确保NGINX的server块可监听对应HTTP端口,或调整ALB与NGINX之间的通信为HTTPS(但客户端证书仍需通过请求头传递)
内容的提问来源于stack exchange,提问作者Vlad Cenan
相关产品推荐
相关产品推荐

