无法从 Apple 终端访问 SSL 站点和神秘的 curl 错误

Posted

技术标签:

【中文标题】无法从 Apple 终端访问 SSL 站点和神秘的 curl 错误【英文标题】:SSL sites inaccessible from Apple terminal and cryptic curl error 【发布时间】: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 的问题与它在同一时间范围内发生的根源相同。

任何提示将不胜感激。提前致谢。

differences in sniffing firefox and curl

【问题讨论】:

【参考方案1】:

服务器(曾经)也为#mastodon 实例提供服务。碰巧关闭了乳齿象实例解决了问题:curl和apple终端可以再次访问其他服务。

问题肯定出在nginx反向代理配置上,但还不知道是什么...

我也有兴趣了解错误的 nginx 配置如何仅影响某些终端/浏览器...

【讨论】:

以上是关于无法从 Apple 终端访问 SSL 站点和神秘的 curl 错误的主要内容,如果未能解决你的问题,请参考以下文章

我该如何调查这些神秘的 Django 崩溃?

Apache2“localhost”可以工作,但对于 127.0.0.1,我得到“无法访问此站点,拒绝连接”。 SSL 也返回授权错误

无法连接到 ssl://gateway.push.apple.com:2195(连接超时)

如何使用 WebRequest 访问使用 HTTPS 的 SSL 加密站点?

iis 申请SSL通道 无法访问

如何用OpenSSL从https网站上导出SSL的CA证书