Ssl https上的Github webhook:“;服务超时“;

Ssl https上的Github webhook:“;服务超时“;,ssl,github-webhook,Ssl,Github Webhook,这个问题是关于让github webhook在https上工作。对于故障排除的最佳实践,这也是一个缺乏经验的人提出的问题 我的临时站点有一个github webhook,指向https://staging.domain.com/git_webhook 如果我将它指向http而不是https,它的功能将非常完美。但对于https,github的响应是:我们无法交付此负载:服务超时。即使对webhook禁用SSL验证,也会发生这种情况 通过使用Postman和curl,webhook可以在https

这个问题是关于让github webhook在https上工作。对于故障排除的最佳实践,这也是一个缺乏经验的人提出的问题

我的临时站点有一个github webhook,指向
https://staging.domain.com/git_webhook

如果我将它指向http而不是https,它的功能将非常完美。但对于https,github的响应是:
我们无法交付此负载:服务超时
。即使对webhook禁用SSL验证,也会发生这种情况

通过使用Postman和curl,webhook可以在https上完美地运行

我尝试过的

  • 检查防火墙是否负责
  • 服务器是带有apparmor、ufw和fail2ban的Ubuntu18.04。在ufw中,https对所有人开放。我禁用了每个服务并重新启动了apache,但没有成功。我还没有找到任何专门针对github ip的规则。但我没有经验,可能不明白如果它们存在的话,该如何对它们进行深入研究。我认为简单地禁用这些服务就足以测试它们是否参与其中

  • 使用tshark检查来自github的传入HTTPS POST请求
  • tshark显示,在“服务器你好,证书,服务器密钥交换,服务器你好完成”之后,没有握手。从我的服务器到github有4或5次[PSH,ACK]重传,github没有响应,然后github关闭连接

  • 这是我的SSL证书的问题吗
  • My main domain.com有一个不适用于任何子域的Comodo SSL证书。my staging.domain.com具有有效的Let's Encrypt SSL证书


    当我运行
    openssl s_client-showcerts-servername staging.domain.com-connect staging.domain.com:443Github支持花了几周时间才回复我,但最终他们发现了问题:

    “服务器上的MTU设置得非常高,您不接受ICMP碎片整理响应(MSS=8860)。”

    键入
    ip addr
    显示网络接口的mtu设置(在本例中
    ens3
    )为8900。这是我部署的Ubuntu 20.04映像的开箱即用设置

    按照我在互联网上找到的说明,我使用了
    ping-s XXXX-c1 distrowatch.com
    ,发现XXXX的任何数字高于1452都会导致100%的数据包丢失

    头的1452+28字节意味着1480 mtu设置应该可以工作

    从前面的
    ip addr
    命令得知网络接口是
    ens3
    ,我输入了
    sudo ip link set dev ens3 mtu 1480
    ,并尝试重新传递github webhook。瞧,成功了

    在我的系统上,网络配置不是位于
    /etc/network/interfaces
    ,而是位于
    /etc/netplan/50 cloud init.yaml
    。因此,为了使mtu更改永久化,我对该文件进行了备份,然后将其mtu从8900编辑到1480。最后,github webhook工作了

    1 0.000000000 140.82.115.240 → <IP OF MY SERVER> TCP 74 64733 → 443 [SYN] Seq=0 Win=26880 Len=0 MSS=8960 SACK_PERM=1 TSval=2233744096 TSecr=0 WS=1024
    2 0.000066037 <IP OF MY SERVER> → 140.82.115.240 TCP 74 443 → 64733 [SYN, ACK] Seq=0 Ack=1 Win=61936 Len=0 MSS=8860 SACK_PERM=1 TSval=2212655787 TSecr=2233744096 WS=128
    3 0.000879665 140.82.115.240 → <IP OF MY SERVER> TCP 66 64733 → 443 [ACK] Seq=1 Ack=1 Win=27648 Len=0 TSval=2233744097 TSecr=2212655787
    4 0.012202817 140.82.115.240 → <IP OF MY SERVER> TLSv1 313 Client Hello
    5 0.012281121 <IP OF MY SERVER> → 140.82.115.240 TCP 66 443 → 64733 [ACK] Seq=1 Ack=248 Win=61696 Len=0 TSval=2212655799 TSecr=2233744109
    6 0.013146175 <IP OF MY SERVER> → 140.82.115.240 TLSv1.2 2799 Server Hello, Certificate, Server Hello Done
    7 0.231698984 <IP OF MY SERVER> → 140.82.115.240 TCP 2799 [TCP Retransmission] 443 → 64733 [PSH, ACK] Seq=1 Ack=248 Win=61696 Len=2733 TSval=2212656019 TSecr=2233744109
    8 0.451700300 <IP OF MY SERVER> → 140.82.115.240 TCP 2799 [TCP Retransmission] 443 → 64733 [PSH, ACK] Seq=1 Ack=248 Win=61696 Len=2733 TSval=2212656239 TSecr=2233744109
    9 0.895731268 <IP OF MY SERVER> → 140.82.115.240 TCP 2799 [TCP Retransmission] 443 → 64733 [PSH, ACK] Seq=1 Ack=248 Win=61696 Len=2733 TSval=2212656683 TSecr=2233744109
    10 1.791706743 <IP OF MY SERVER> → 140.82.115.240 TCP 2799 [TCP Retransmission] 443 → 64733 [PSH, ACK] Seq=1 Ack=248 Win=61696 Len=2733 TSval=2212657579 TSecr=2233744109
    11 3.551693664 <IP OF MY SERVER> → 140.82.115.240 TCP 2799 [TCP Retransmission] 443 → 64733 [PSH, ACK] Seq=1 Ack=248 Win=61696 Len=2733 TSval=2212659339 TSecr=2233744109
    12 4.930201185 140.82.115.240 → <IP OF MY SERVER> TCP 66 64733 → 443 [FIN, ACK] Seq=248 Ack=1 Win=27648 Len=0 TSval=2233749027 TSecr=2212655799
    13 4.930468118 <IP OF MY SERVER> → 140.82.115.240 TCP 66 443 → 64733 [FIN, ACK] Seq=2734 Ack=249 Win=61696 Len=0 TSval=2212660718 TSecr=2233749027
    14 4.931240019 140.82.115.240 → <IP OF MY SERVER> TCP 54 64733 → 443 [RST] Seq=249 Win=0 Len=0