使用 ppa:ondrej/apache2 从 2.4.7 迁移到 Apache 2.4.37 后出现 SSL 问题

使用 ppa:ondrej/apache2 从 2.4.7 迁移到 Apache 2.4.37 后出现 SSL 问题

使用以下方法迁移到 Apache 2.4.37 后,我遇到了一个恼人的问题ppa:ondrej/apache2ERR_SSL_PROTOCOL_ERROR。更改后,我在访问我的网站时遇到了很多问题。

结果是,当某个网站包含一些 ajax 脚本,这些脚本会定期检查某些数据时,每隔一个请求,有时还会返回上述错误。刷新网站时也会发生同样的情况 - 它会一直处于“不安全 - 安全 - 不安全”的循环中。

[编辑] 每当发生这种情况时,日志中都不会出现与此事相关的错误。更不用说,这种情况在全球范围内发生 - 从服务器提供服务的所有网站都会同时出现此问题,持续时间也差不多。

浏览器上的请求如下所示:

devtools 请求列表

对于我的服务器上的认证,我使用 Let'sEncrypt certbot,并且在每个启用 SSL 的虚拟主机中,我都包含了options-ssl-apache.conf由 Let'sEncrypt 提供。

我要指出的是,我的更新后,vhost confs 没有变化,站点使用的证书文件也没有变化.- 该问题在 2.4.7 上不会发生,只有更新到 2.4.37 时才会发生。

Wireshark 日志

时间源目标协议信息
9.759740 local_ip server_ip TCP 60485 → 443 [ACK] Seq=1 Ack=1 Win=256 Len=1 [重组 PDU 的 TCP 段]
9.886868 服务器 IP 本地 IP TCP 443 → 60485 [ACK] Seq=1 Ack=2 Win=653 Len=0 SLE=1 SRE=2
11.082160 local_ip server_ip TLSv1.2 忽略未知记录
11.209445 服务器 IP 本地 IP TCP 443 → 60485 [ACK] Seq=1 Ack=966 Win=668 Len=0
11.209446 server_ip local_ip TLSv1.2 警报(级别:致命,描述:意外消息)
11.209446 服务器 IP 本地 IP TCP 443 → 60485 [FIN,ACK] Seq=8 Ack=966 Win=668 Len=0
11.209495 本地 IP 服务器 IP TCP 60485 → 443 [ACK] 序列号=966 确认=9 Win=256 长度=0
11.209645 local_ip server_ip TLSv1.2 加密警报
11.209917 本地 IP 服务器 IP TCP 60485 → 443 [FIN,ACK] Seq=989 Ack=9 Win=256 Len=0
11.336928 服务器 IP 本地 IP TCP 443 → 60485 [RST] Seq=9 Win=0 Len=0
11.336991 服务器 IP 本地 IP TCP 443 → 60485 [RST] Seq=9 Win=0 Len=0
72.078422 本地 IP 服务器 IP TCP 60691 → 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 WS=256 SACK_PERM=1
72.209323 服务器 IP 本地 IP TCP 443 → 60691 [SYN,ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 SACK_PERM=1 WS=128
72.209390 本地 IP 服务器 IP TCP 60691 → 443 [ACK] 序列号=1 确认=1 Win=65536 长度=0
72.209587 本地 IP 服务器 IP TLSv1.2 客户端 Hello
72.340476 服务器 ip 本地 ip TCP 443 → 60691 [ACK] Seq=1 Ack=518 Win=30336 Len=0
72.341920 server_ip local_ip TLSv1.2 服务器 Hello,更改密码规范,加密握手消息
72.342281 local_ip server_ip TLSv1.2 更改密码规范,加密握手消息
72.343018 local_ip server_ip TLSv1.2 应用程序数据
72.473941 服务器 IP 本地 IP TCP 443 → 60691 [ACK] Seq=149 Ack=1525 Win=32256 Len=0
72.510918 server_ip local_ip TLSv1.2 应用程序数据
72.552329 本地 IP 服务器 IP TCP 60691 → 443 [ACK] Seq=1525 Ack=935 Win=64512 Len=0
117.510566 本地 IP 服务器 IP TCP [TCP 保持活动] 60691 → 443 [ACK] Seq=1524 Ack=935 Win=64512 Len=1
117.641439 服务器 IP 本地 IP TCP [TCP 保持活动 ACK] 443 → 60691 [ACK] Seq=935 Ack=1525 Win=32256 Len=0 SLE=1524 SRE=1525
132.080054 local_ip server_ip TLSv1.2 应用程序数据
132.211048 服务器 IP 本地 IP TCP 443 → 60691 [ACK] Seq=935 Ack=2489 Win=34176 Len=0
132.211049 server_ip local_ip TLSv1.2 警报(级别:致命,描述:意外消息)
132.211049 服务器 IP 本地 IP TCP 443 → 60691 [FIN,ACK] Seq=942 Ack=2489 Win=34176 Len=0
132.211148 本地 IP 服务器 IP TCP 60691 → 443 [ACK] Seq=2489 Ack=943 Win=64512 Len=0
132.211288 local_ip server_ip TLSv1.2 加密警报
132.211496 本地 IP 服务器 IP TCP 60691 → 443 [FIN,ACK] Seq=2512 Ack=943 Win=64512 Len=0
132.342025 服务器 IP 本地 IP TCP 443 → 60691 [RST] Seq=943 Win=0 Len=0
132.342255 服务器 IP 本地 IP TCP 443 → 60691 [RST] Seq=943 Win=0 Len=0

答案1

我在运行 RT4 票务系统的启用 SSL 的 VirtualHosts 上也遇到了问题。我升级到了 apache2 2.4.37-1+ubuntu18.04.1+deb.sury.org+1 和 openssl 1.1.1-3+ubuntu18.04.1+deb.sury.org+3。

对我来说,情况如下。远程情况下,我可以使用本地计算机上的浏览器正常访问服务器上运行的网站。但是,当我使用服务器上的命令行工具访问票证时,命令会超时,并且会出现错误。此外,用于提供新票证的 rt-mailgate 程序也出现错误。不幸的是,当我使用调试级别时,日志文件中没有出现很多错误 :-(

如果我重新配置设置并禁用 SSL(因此通过 http 而不是 https 运行),那么这些脚本将再次正常运行。因此 SSL 层似乎是罪魁祸首……

这可能与错误单“使用客户端证书登录超时”有关,网址为https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1803689(至少组合 apache2/openssl 版本是相同的)。

相关内容