0

我正在 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,尽管存在更多传输错误,但行为相似。升级后这些错误似乎得到了很好的清理。

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

4

1 回答 1

0

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

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

于 2017-06-27T14:37:17.377 回答