Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#1361 closed defect (invalid)

SSL: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol

Reported by: iHeadRu@… Owned by:
Priority: minor Milestone:
Component: other Version: 1.13.x
Keywords: Cc:
uname -a: FreeBSD ***.ihead.ru 11.1-RELEASE-p1 FreeBSD 11.1-RELEASE-p1 #0: Wed Aug 9 11:55:48 UTC 2017 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
nginx -V: nginx version: nginx/1.13.4
built by clang 4.0.0 (tags/RELEASE_400/final 297347) (based on LLVM 4.0.0)
built with OpenSSL 1.0.2l 25 May 2017
TLS SNI support enabled
configure arguments: --with-http_stub_status_module --with-http_flv_module --without-http_empty_gif_module --without-http_memcached_module --without-http_upstream_ip_hash_module --without-http_browser_module --with-http_ssl_module --without-http_uwsgi_module --without-http_scgi_module --with-openssl=../openssl-1.0.2l --with-http_v2_module --with-pcre-jit --with-http_auth_request_module --with-file-aio

Description

nginx почему-то не может проксировать к некоторым https-сайтам.

Упрощенный конфиг, воспроизводящий проблему, выглядит так

server {

listen 127.0.0.1:443 ssl default;
listen *:443 ssl default;
server_name _;

ssl_certificate /usr/local/nginx/conf/cert.pem;
ssl_certificate_key /usr/local/nginx/conf/key.pem;

location / {

#proxy_ssl_protocols TLSv1.2; - не помогает, ошибка та же
proxy_pass https://$host:443;

}

}

2017/08/21 14:46:44 [crit] 20127#0: *28079 SSL_do_handshake() failed (SSL: error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol) while SSL
handshaking to upstream, client: 192.168.*, server: _, request: "GET / HTTP/1.1", upstream: "https://104.18.52.205:443/", host: "react.semantic-ui.com",
referrer: "http://react.semantic-ui.com/"

При этом прямой запрос через curl проходит нормально.

В чем может быть дело?

Change History (2)

comment:1 by Maxim Dounin, 7 years ago

Resolution: invalid
Status: newclosed

Конкретно упомянутый сервер - за Cloudflare, и не принимает запросы без SNI. Чтобы nginx использовал SNI в запросах к бекендам, следует включить proxy_ssl_server_name.

comment:2 by iHeadRu@…, 7 years ago

Спасибо, это то, что нужно. Я как-то пропустил этот параметр.

Note: See TracTickets for help on using tickets.