【发布时间】:2023-03-04 03:08:01
【问题描述】:
我正在尝试使用 nginx 作为具有两种 SSL/相互 SSL 的 Web 逻辑的反向代理。
客户端 NGINX WebLogic 服务器
客户端到 NGINX 两种方式 SSL 工作正常,但在上游连接到 Web 逻辑时出现以下错误。
nginx 调试日志:
2014/08/16 22:40:53 [调试] 33741#0: *9 SSL 握手处理程序: 0 2014/08/16 22:40:53 [调试] 33741#0: *9 SSL_do_handshake: -1 2014/08/16 22:40:53 [调试] 33741#0: *9 SSL_get_error: 2 2014/08/16 22:40:53 [调试] 33741#0:计时器增量:5 2014/08/16 22:40:53 [调试] 33741#0:发布事件 0000000000000000 2014/08/16 22:40:53 [调试] 33741#0:工作周期 2014/08/16 22:40:53 [调试] 33741#0:kevent 计时器:59840,更改:0 2014/08/16 22:40:53 [调试] 33741#0:kevent 事件:2 2014/08/16 22:40:53 [调试] 33741#0: kevent: 7: ft:-2 fl:0025 ff:00000000 d:131520 ud:00007FF263805150 2014/08/16 22:40:53 [调试] 33741#0: *9 kevent: 7: ft:-2 fl:0025 ff:00000000 d:131520 ud:00007FF263805150 2014/08/16 22:40:53 [调试] 33741#0: *9 SSL 握手处理程序: 1 2014/08/16 22:40:53 [调试] 33741#0: *9 SSL_do_handshake: 0 2014/08/16 22:40:53 [调试] 33741#0: *9 SSL_get_error: 1 SSL_do_handshake() 在 SSL 与上游握手时失败(SSL:错误:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警报握手失败:SSL 警报号 40) 客户端:本地主机,服务器:本地主机,请求:“GET /customers/~/xxxx/~/xxx/health HTTP/1.1”,上游:“https://xx.xx.xx.xxx:11211/customer-upstream/ ~/xxx/~/xxx/health/”,主机:“本地主机:12121”这是我的上游 nginx 配置:
proxy_cache_path /opt/openresty/nginx/cache levels=1:2 keys_zone=data-cache:8m max_size=1000m inactive=600m; proxy_temp_path /opt/openresty/nginx/cache/tmp; 上游 rs_backend { 服务器 xx.xx.xx.xxx:11211; } 服务器 { server_name 本地主机; 听 12121 ssl; 开启ssl; ssl_verify_client 开启; ssl_session_cache 共享:SSL:1m; ssl_session_timeout 10m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; #ssl_protocols TLSv1; #ssl_ciphers SSL_RSA_WITH_RC4_128_MD5:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!茶花; #ssl_ciphers HIGH:!MD5:!aNULL:!EDH:!CAMELLIA; ssl_prefer_server_ciphers 开启; proxy_ssl_session_reuse 关闭; large_client_header_buffers 4 32K; ssl_certificate /etc/ssl/api-cert.pem; ssl_certificate_key /etc/ssl/api-cert.key; ssl_client_certificate /etc/ssl/api-cert.pem; 位置/客户/ { 重写 ^/customers/(.*) /customer-upstream/$1/ break; 代理重定向关闭; proxy_ssl_verify 开启; proxy_ssl_verify_depth 4; proxy_ssl_trusted_certificate /etc/ssl/api-cert-nopass.pem; proxy_pass_header 服务器; proxy_http_version 1.1; proxy_set_header 连接保持活动; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header 主机 localhost:11211; proxy_set_header 接受 'application/json;v=3'; proxy_pass https://xx.xx.xx.xxx:11211/; #proxy_pass https://rs_backend; }我尝试了各种选项,包括在配置下方注释掉。
proxy_ssl_verify 开启; proxy_ssl_verify_depth 4;如果我尝试使用 openssl c_client 命令行,我可以连接并获得 HTTP GET 请求的 2xx 响应。
openssl c_client -connect xx.xx.xx.xxx:11211 -cert api-qaid-nopass.pem任何帮助将不胜感激。
【问题讨论】:
-
为什么要投反对票?看到问题已通过应用代码补丁解决。
标签: ssl nginx reverse-proxy weblogic11g