【问题标题】:gnutls and openssl handshake in NGINXNGINX 中的 gnutls 和 openssl 握手
【发布时间】:2017-05-02 13:53:34
【问题描述】:

我正在 NGINX 中测试 SSL/TLS 流代理,它将使用 gnutls 作为底层 TLS API 连接到 Web 服务器。使用gnutls中的命令行测试工具(gnutls-serv)整个过程都可以,但是我看不懂逻辑:

NGINX 客户端(将 HTTP 请求从实际客户端代理到 gnutls 服务器)似乎想要多次握手连接。事实上,在大多数测试中,似乎在服务器响应测试网页之前握手 3 次都没有错误。使用wireshark,或者只是调试消息,看起来客户端的套接字(从gnutls服务器的角度来看)正在关闭并在不同的端口上重新打开。最后在成功的连接上,gnutls 使用了一个恢复会话,我想这是前面提到的成功握手之一。

我没有找到任何关于这种行为的文档,我想知道这是否只是“NGINX 的事情”。

虽然握手最终适用于测试程序,但似乎有点浪费(进行多次昂贵的握手)并且在非测试环境中实现握手逻辑将很棘手,而无需真正了解客户端正在尝试做什么。

我认为传输没有任何超时或问题,测试环境是同一子网上的几个不同的虚拟机连接在 1 个交换机之间。

NGINX 版本是最新的主线:1.11.7。我最初使用的是 1.10.something,尽管存在更多传输错误,但行为相似。升级后这些错误似乎得到了很好的清理。

非常感谢其他人提供的任何信息或经验!

【问题讨论】:

  • 客户端是什么?如果是浏览器,它将为每个图像发出多个请求,用于 CSS、Javadcript、图像等。
  • 好吧,我只是在使用 wget。我认为它除了一个 GET 之外没有做任何其他事情。还将重试次数设置为 1。

标签: ssl nginx configuration handshake gnutls


【解决方案1】:

在 NGINX 和后端服务器之间使用 RSA 密钥交换或使用 SSLKEYLOGFILE LD_PRELOAD 让 NGINX 获得 Wireshark 解密数据所需的数据。

虽然单个传入连接应该只生成一个传出连接,但 NGINX 中可能会进行一些优化以获取常用文件(favicon.ico、robots.txt)。

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多