【发布时间】: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