繁体   English   中英

Nginx中的Gnutls和openssl握手

[英]gnutls and openssl handshake in NGINX

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

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

我找不到有关这种行为的任何文档,并且想知道这是否只是“ NGINX问题”。

尽管握手最终可以与测试程序一起使用,但这似乎是浪费的(要进行多次昂贵的握手),并且在非测试环境中实现握手逻辑将非常棘手,而实际上并没有理解客户端的操作意图。

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

NGINX版本是最新的主线:1.11.7。 我最初使用的是1.10.something,尽管有更多的传输错误,但行为类似。 这些错误似乎可以通过升级很好地清除。

任何其他人的信息或经验,将不胜感激!

在NGINX和后端服务器之间使用RSA密钥交换,或者对NGINX使用SSLKEYLOGFILE LD_PRELOAD以获取Wireshark解密数据所必需的数据。

虽然单个传入连接应仅生成一个传出连接,但NGINX可能进行了一些优化以提取公用文件(favicon.ico,robots.txt)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM