Docker SSL 握手不起作用。如何调试?

问题描述 投票:0回答:1

我在 Django 支持的项目中使用 docker,无法通过生产环境中的请求库访问 https://api.cognitive.microsofttranslator.com。请求库永远“挂起”在 SSL 握手上。

所以我决定尝试一下curl。同样的问题: 呼唤

curl https://api.cognitive.microsofttranslator.com

永远挂起。

如果我在本地计算机上运行这个容器,并运行curl =>一切正常。 如果我直接在主机上运行curl命令,它也可以正常工作。

知道可能出了什么问题或者我可以如何调试这个问题吗?

我也尝试过例如

curl https://www.google.com
curl https://www.bing.com

这有效。这只是 microsofttranslator.com 页面无法正常工作。

编辑:在容器中运行此命令会导致以下输出:

    curl --verbose https://api.cognitive.microsofttranslator.com
*   Trying 20.50.1.17:443...
* Connected to api.cognitive.microsofttranslator.com (20.50.1.17) port 443 (#0)
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: /etc/ssl/certs
* Recv failure: Connection reset by peer
* OpenSSL SSL_connect: Connection reset by peer in connection to api.cognitive.microsofttranslator.com:443 
* Closing connection 0
curl: (35) Recv failure: Connection reset by peer
docker ssl docker-compose
1个回答
0
投票

我发现问题了。

主机系统使用 MTU=1450。 我的 docker compose 没有自动应用这个值。所以设置为MTU=1500

我必须手动将网络设置为 MTU=1450 值:

networks:
  internal_network:
    driver: bridge
    driver_opts:
      com.docker.network.driver.mtu: 1450
© www.soinside.com 2019 - 2024. All rights reserved.