![TLS 协商在 Client Hello 处卡住](https://linux22.com/image/793086/TLS%20%E5%8D%8F%E5%95%86%E5%9C%A8%20Client%20Hello%20%E5%A4%84%E5%8D%A1%E4%BD%8F.png)
我们正在使用位于英国的 Azure 应用程序网关上托管的 HTTPS 端点。
到目前为止,英国境内及境外的所有地区都可以访问它。
新加坡的某个特定客户站点无法通过某些设备(平板电脑、Linux 服务器等)访问,但可以通过 Windows 笔记本电脑/台式机访问。
curl 和 openssl 输出显示 TLS 进程在 Client Hello 之后卡住。
我们测试过的所有其他服务似乎都可以运行(AWS LB、另一个项目上的 Azure AG、CloudFlare CDN 等)。
它看起来像经常报告的 TLS/MTU 问题,但是只有当我们将客户端设备的 MTU 降低到 96 时它才会起作用。
新加坡的一个应用程序网关也出现了同样的问题,提供了一个简单的测试页面。
网上的一些想法表明与数据包相关的阻塞,但考虑到我们可以在不同条件下重现它,这似乎不太可能。客户的 IT 团队声称网络配置相当标准。
这是最远的访问地点之一,但不是最远的站点,这也很好。
* Trying xx.xx.xx.xx...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x1c628b0)
* Connected to xx.xxx.xxx (xx.xx.xx.xx) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to xx.xxx.xxx:443
* Closing connection 0
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to xx.xxx.xxx:443