Ocsp Stapling 和iOS界面卡顿问题

这个问题成功的吸引了我的注意。

起因:一个Flutter写的app在iOS上偶尔会发生了界面卡顿甚至冻结10多秒,但在Android正常。

开始这个问题没太引起重视,觉得是flutter的问题。但后来随着dart的issue里面报告的人逐渐多起来,看起来不是那么简单。不过非常令人迷惑的是这个现象只在iOS偶尔出现,Android从来不出现,这种不确定性使得重现和调试非常困难。

在issue里面发现报告的人大部分疑似是中国用户,之后发现有人提到更换了阿里云证书之后问题不再重现,这使得我们把问题方向放在https上。最终发现服务器的OCSP Stapling失效,造成了soft failure。之后的行为要看客户端实现,有的浏览器接受soft failure,不进行客户端检查,一切正常。但有一些客户端比如Safari会自己去检查了OCSP状态,从而造成界面无响应。检查nginx log发现ocsp.int-x3.letsencrypt.org请求超时,随后确认此域名遭到了DNS污染。

在服务器开启OCSP Stapling对于提升速度帮助很大。所以无论如何也是应该开启的。

但是仍然有两个问题没有解释:

  1. 为什么Android没问题,iOS有问题
  2. 为什么有时候可以重现,有时候不可以重现

为了回答这几个问题,顺便找一个解决方案,我顺着读了一圈代码和协议,从nginx到openssl,从tls到ocsp。最后终于能回答这两个问题了。

互联网之子 Aaron Swarts 想要看到的世界

首发于: https://mp.weixin.qq.com/s/z4J2KI8LjcfOIZLhGbi_QQ

Jade和我偶尔会聊起一些宏大的话题,最近聊到了Aaron和互联网创建者们的一些历史。她觉得应该正经的来一次对话,记录下来分享给其他人。我们约了个时间,原计划聊2个小时,实际上聊了5个小时。最后形成了一篇交谈形式的文字,她称之为文字版的Podcast。我很喜欢这种形式,我也更认同文字的价值,更好分享,更好检索,也更好修改或者摘录使用。以后我们应该还会继续这样的对话,这次聊天里面很多东西都可以继续讲下去。希望你也喜欢这个形式。

穿越寒冬的独行者

2018年有很多故事可以写,但是到最后一天的时候,让我选一件事来写,我想写的是duckduckgo这个搜索引擎。选择它是有原因的,这个搜索引擎创始于2008年,正好是第10个年头。

duckduckgo homepage

即使在今天,听说过这个搜索引擎的人也不多。上个月(2018.11),它的每日搜索量第一次超过了3000万次,很多科技媒体用非常小的版面报道过这件事。中文也有报道,基本上就是“一句话新闻”这样的待遇,没人多想什么。这不意外,每天3000万搜索听起来不小,但是放在整个搜索市场可以算的上微不足道。做为对比,Google早就不再发布每天准确的搜索量,但根据前几年发布过的数字和增长率,大致能推算出来,一般被认为是4万~8万次搜索每秒。即使用最低预测,要超过duckduckgo一整天搜索量,Google只需花750秒==12.5分钟。

在搜索引擎市场上,每天3000万搜索量太小了,比被所有人都认为早就完蛋了的Yahoo搜索还少好几倍。但是这样一对比,这个在搜索引擎市场只占0.x%份额的产品竟然存活了10年,这就是一个有意思的故事。再考虑它不属于任何大公司,是个完全独立的搜索引擎,那就更有意思了。它是如何开始的,如何存活下来的,谁是它的用户?

惩罚加拿大完整指南

我在加拿大生活了不少年,最近一系列的事情让很多人开始注意到了加拿大。于是我收到了来自朋友们的各种问题,从如何抵制加拿大,到加拿大为什么这么傻。诸如此类。挨个答复比较麻烦,干脆写一篇文章。

通常我更愿意写科技相关话题,不写社会和历史话题,一方面是我不是这个领域的专业人员,很多东西未必准确,另外一方面,跟科技不同,这类话题难以保证足够客观,必定带有个人视角,从而引起更多争议。所以我尽量保持拿事实和数据说话,少发表个人看法,但是个人看法必然无法避免,所以还请批判阅读。以上是正文开始之前的一点点声明。