【问题标题】:NGINX caching proxy fails with SSL23_GET_SERVER_HELLO:sslv3 alert handshake failureNGINX 缓存代理因 SSL23_GET_SERVER_HELLO:sslv3 警报握手失败而失败
【发布时间】:2023-03-22 23:20:01
【问题描述】:

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

这是 NGINX 错误日志的摘录:

2014/08/14 16:08:26 [错误] 27534#0: *11560993 SSL_do_handshake() 失败(SSL:错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败)同时 SSL 与上游、客户端握手:82.33.49.135,服务器:localhost,请求:“GET /static/images/media-logos/best.png HTTP/1.1”,上游:“https://x.x.x.x:443/static/images/media-logos/best.png”,

我尝试了不同的代理设置,例如 proxy_ssl_protocols 和 proxy_ssl_ciphers,但没有任何组合起作用。

有什么想法吗?

【问题讨论】:

    标签: caching nginx proxy


    【解决方案1】:

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

    proxy_ssl_server_name on;
    

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

    proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    

    对于早期版本,您也许可以使用此补丁(但我无法验证它是否有效):

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

    2019 年更新:您应该避免使用 TLSv1 和 TLSv1.1,并尽可能禁用它们。我会将它们留在答案中,因为它们对 SNI 仍然有效。

    【讨论】:

    • 你刚刚为我节省了几个小时。
    • 非常感谢您代表我们遭受这种痛苦!
    • 我将 Cloudflare 用于 HTTPS,它使用 SNI。进行此更改解决了问题 - 你真是天赐良机,谢谢!
    • 这也省了我不少麻烦
    • 谢谢!由于我使用了多个上游,我最终还需要添加 proxy_ssl_name upstream-name.com; 才能使其工作。
    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 2015-04-21
    • 1970-01-01
    • 2016-04-27
    • 2023-03-11
    • 2016-05-02
    • 2016-12-12
    相关资源
    最近更新 更多