NGINX缓存代理失败,SSL23_GET_SERVER_HELLO:sslv3警报握手失败



NGINX作为缓存代理在通过HTTPS从CloudFront服务器获取内容时遇到问题:

这是NGINX错误日志的摘录:

2014/08/14 16:08:26 [error] 27534#0: *11560993 SSL_do_handshake() failed (SSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure)当SSL握手向上游,client: 82.33.49.135, server: localhost, request: "GET/static/images/媒体-logo/best.png HTTP/1.1",上游:"https://x.x.x.x:443/static/images/media-logos/best.png",

我尝试了不同的代理设置,如proxy_ssl_protocols和proxy_ssl_ciphers,但没有组合工作。

任何想法?

我遇到了完全相同的问题,花了几个小时…我猜你使用的是旧版本的nginx(低于1.7)?在nginx 1.7中,你可以使用这个指令:

proxy_ssl_server_name on;

这将强制nginx使用SNI另外,您应该设置SSL协议:

proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

对于更早的版本,你可以使用这个补丁(但我不能验证它是否有效):

http://trac.nginx.org/nginx/ticket/229

2019 Update:您应该避免使用TLSv1和TLSv1.1,如果可能的话禁用它们。我将把它们留在答案中,因为它们对于SNI仍然有效。

最新更新