【发布时间】:2017-09-17 09:18:29
【问题描述】:
我有一台机器在 docker 下为站点提供服务,通过带有 TLS 的 nginx 进行反向代理。直到 4 月 15 日左右,一切都很顺利。 iPhone 无法访问两个站点(无论使用何种浏览器)、MacBook 上的 Safari ...... curl 以及旧的 Android(Samsung S2)和旧的 Firefox(v25)! :o Windows、GNU/Linux 上的 Firefox 一切正常。 一个站点是一个 Mattermost 实例;该应用在 Android 上运行正常,但在 iPhone 上却不行。
Safari 抱怨它“无法加载页面,连接已丢失”。
curl -v mysite 报告:
- 将 URL 重建为:https://teamtime.me/
- 在 DNS 缓存中找不到主机名
- 正在尝试 212.129.18.187...
- 已连接到 teamtime.me (212.129.18.187) 端口 443 (#0)
- 成功设置证书验证位置:
- CA 文件:无 CApath:/etc/ssl/certs
- SSLv3、TLS 握手、客户端问候 (1):
- SSLv3、TLS 握手、服务器问候 (2):
- SSLv3、TLS 握手、CERT (11):
- SSLv3、TLS 握手、服务器密钥交换 (12):
- SSLv3,TLS 握手,服务器完成 (14):
- SSLv3、TLS 握手、客户端密钥交换 (16):
- SSLv3,TLS 更改密码,客户端问候 (1):
- SSLv3,TLS 握手,完成 (20):
- SSLv3,TLS 更改密码,客户端问候 (1)
- SSLv3,TLS 握手,完成 (20):
- 使用 TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 的 SSL 连接
- 服务器证书:
- 主题:CN=teamtime.me
- 开始日期:2017-04-02 21:41:00 GMT
- 有效期:2017-07-01 21:41:00 GMT
- subjectAltName: teamtime.me 匹配
- 发行人:C=US; O=让我们加密; CN=让我们加密权威 X3
SSL 证书验证正常。 获取/HTTP/1.1 用户代理:curl/7.38.0 主持人:teamtime.me 接受:/
SSL 读取:错误:00000000:lib(0):func(0):reason(0), errno 104
- 关闭连接 0 curl: (56) SSL 读取: 错误:00000000:lib(0):func(0):reason(0), errno 104
我使用 firefox 和 curl 嗅探到该站点的连接,并注意到以下差异: 使用firefox,在客户端密钥交换之后,服务器会创建一个新的会话票据,并将一个320大小的应用程序数据包发送回服务器, 而使用 curl 时,在客户端密钥交换之后,服务器发送一个更改密码规范,客户端以 170 大小的数据包应用程序数据进行应答,结束连接(ACK 然后来自服务器的 RST-ACK)。
我被困在这里了。我不知道在哪里看。我没有任何苹果终端可以测试,但我猜 curl 的问题与它在同一时间范围内发生的根源相同。
任何提示将不胜感激。提前致谢。
【问题讨论】: